Кнопка «Удалить» дает мне NameError в приложении Rails + React - PullRequest
0 голосов
/ 22 ноября 2018

Мне тяжело заставить кнопку удаления работать в моем приложении Twitter-ish.Я получаю 500 (Internal Server Error) на консоли Chrome и NameError (undefined local variable or method `tweet' for #<TweetsController:0x00007f91275b7448>): на своем терминале, когда нажимаю кнопку удаления.
То, что console.log в onSubmitDelete(id) дает мне правильный выбранный идентификатор твита, поэтому мое действие уничтожения должно быть в состояниичтобы определить, какой твит я хочу удалить, не так ли?Я не знаю, почему мой контроллер выдает мне такую ​​ошибку.что я могу сделать, чтобы это исправить?

TweetsPage.js

import React from 'react'
import Tweets from './Tweets'

class TweetsPage extends React.Component {
  constructor() {
    super();
    this.state = {
      tweets: [],
      id: '',
    };
    this.onSubmitDelete = this.onSubmitDelete.bind(this);
  }
  loadTweetsFromServer() {
    const url = '/tweets/index.json';
    $.ajax({
      url: url,
      dataType: 'json',
      type: 'GET',
      cache: false,
      success: (data) => {
        this.setState({
          tweets: data
        });
      },
      error: (xhr, status, err) => {
        console.error(url, status, err.toString());
      },
    });
  }
  onSubmitDelete(id) {
    const url = '/tweets/destroy';
    console.log(id)
    $.ajax({
      url: url,
      type: 'DELETE',
      cache: false,
      data: {
        id: id
      },
      success: (data) => {
        this.loadTweetsFromServer();
      },
      error: (xhr, status, err) => {
        console.error(url, status, err.toString());
      },
    });
  }
  componentDidMount() {
    this.loadTweetsFromServer();
  }
  render() {
    return (
      <div>
        <Tweets tweets={this.state.tweets} onDelete={this.onSubmitDelete} />
      </div>
    );
  }
}

export default TweetsPage;

tweets_controller.rb

def destroy
  tweet = Tweet.find(params[:id])
  tweet.destroy
end

config / rout.rb

delete 'tweets/destroy' => 'tweets#destroy'

Пожалуйста, дайте мне знать, если вам нужно увидеть мои дочерние компоненты.

1 Ответ

0 голосов
/ 22 ноября 2018

Я не упомянул, но я использовал Docker для Mac, поэтому я перезапустил свой контейнер, и он работал нормально, без изменений кода.Глупо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...