Мне тяжело заставить кнопку удаления работать в моем приложении 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'
Пожалуйста, дайте мне знать, если вам нужно увидеть мои дочерние компоненты.