Guest User

Untitled

a guest
Nov 18th, 2018
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.16 KB | None | 0 0
  1. import React from 'react'
  2. import NewTweet from './NewTweet'
  3. import Tweets from './Tweets'
  4.  
  5. class TweetsPage extends React.Component {
  6. constructor() {
  7. super();
  8. this.state = {
  9. tweets: [],
  10. tweet: '',
  11. };
  12. this.onSubmit2 = this.onSubmit2.bind(this);
  13. }
  14. loadTweetsFromServer() {
  15. $.ajax({
  16. url: 'http://localhost:3000/tweets/index.json',
  17. dataType: 'json',
  18. type: 'GET',
  19. cache: false,
  20. success: (data) => {
  21. this.setState({
  22. tweets: data
  23. });
  24. },
  25. error: (xhr, status, err) => {
  26. console.error(url, status, err.toString());
  27. },
  28. });
  29. }
  30. onSubmit2(value) {
  31. console.log(value)
  32. $.ajax({
  33. url: 'http://localhost:3000/tweets/create',
  34. dataType: 'json', // I'm not even sure if json is the right choice.
  35. type: 'POST',
  36. cache: false,
  37. data: {
  38. tweet: this.state.tweet
  39. },
  40. success: (data) => {
  41. this.loadTweetsFromServer();
  42. },
  43. error: (xhr, status, err) => {
  44. console.error(url, status, err.toString());
  45. },
  46. });
  47. }
  48. componentDidMount() {
  49. this.loadTweetsFromServer();
  50. }
  51. render() {
  52. return (
  53. <div>
  54. <NewTweet onSubmit1={this.onSubmit2} />
  55. <Tweets tweets={this.state.tweets} />
  56. </div>
  57. );
  58. }
  59. }
  60.  
  61. export default TweetsPage;
  62.  
  63. import React from 'react'
  64.  
  65. class NewTweet extends React.Component {
  66. constructor(props) {
  67. super(props);
  68. this.state = {
  69. tweet: ''
  70. };
  71. this.getInput = this.getInput.bind(this);
  72. this.onSubmit = this.onSubmit.bind(this);
  73. }
  74. getInput(e) {
  75. this.setState({
  76. tweet: e.target.value
  77. });
  78. }
  79. onSubmit() {
  80. this.props.onSubmit1(this.state.tweet);
  81. }
  82. render() {
  83. return (
  84. <div>
  85. <textarea onChange={this.getInput}></textarea>
  86. <button onClick={this.onSubmit}>submit</button>
  87. </div>
  88. );
  89. }
  90. }
  91.  
  92. export default NewTweet;
  93.  
  94. def create
  95. tweet = Tweet.new(create_params)
  96. tweet.user_id = current_user.id
  97. tweet.save
  98. end
  99.  
  100. private
  101. def create_params
  102. params.require(:tweet).permit(:user_id, :tweet)
  103. end
  104.  
  105. get 'tweets/index' => 'tweets#index'
  106. post 'tweets/create' => 'tweets#create'
Add Comment
Please, Sign In to add comment