将 comments_id 传递给 Rails 应用中的控制器
Passing comments_id to controller in Rails app
我无法在基本的 Rails MVC 中 edit/delete 评论,但我遇到的问题是 comments_controller 寻找 user_id 而不是comments_id,因为 user_id 是外键。我的假设是 Comment.find(params[:id]) 会导致 comments_id,但事实并非如此。
这是我的最后一部分 comments_controller:
def edit
@comment = Comment.find(params[:id])
@user = current_user
end
def update
@comment = Comment.find(params[:id])
@user = current_user
@comment.update(comment_params)
redirect_to @comment
end
def destroy
@user = current_user
@comment = Comment.find(params[:id])
@comment.destroy
redirect_to comments_path
end
private
def comment_params
params.require(:comment).permit(:user_id, :location, :title, :body)
end
我正在尝试 edit/delete 的视图中的评论如下所示:
<% @user.comments.each do |w| %>
<tr>
<td>Location:<%= w.location %></td>
<td>Title:<%= w.title %></td>
<td>Body:<%= w.body %></td>
<td><%= link_to 'Edit', edit_comment_path %></td>
<td><%= link_to 'Destroy', comment_path,
method: :delete,
data: { confirm: 'Are you sure?' } %></td><br>
</tr>
<% end %>
感谢您提供的任何建议:-)
当您 edit/destroy 您的评论时,您需要在 link_to
助手中传递实际的评论。 link_to 'Destroy', w, method: :delete, data: { confirm: 'Are you sure?' }
之类的东西就可以了。
与编辑类似:link_to 'Edit', edit_comment_path(w)
我无法在基本的 Rails MVC 中 edit/delete 评论,但我遇到的问题是 comments_controller 寻找 user_id 而不是comments_id,因为 user_id 是外键。我的假设是 Comment.find(params[:id]) 会导致 comments_id,但事实并非如此。
这是我的最后一部分 comments_controller:
def edit
@comment = Comment.find(params[:id])
@user = current_user
end
def update
@comment = Comment.find(params[:id])
@user = current_user
@comment.update(comment_params)
redirect_to @comment
end
def destroy
@user = current_user
@comment = Comment.find(params[:id])
@comment.destroy
redirect_to comments_path
end
private
def comment_params
params.require(:comment).permit(:user_id, :location, :title, :body)
end
我正在尝试 edit/delete 的视图中的评论如下所示:
<% @user.comments.each do |w| %>
<tr>
<td>Location:<%= w.location %></td>
<td>Title:<%= w.title %></td>
<td>Body:<%= w.body %></td>
<td><%= link_to 'Edit', edit_comment_path %></td>
<td><%= link_to 'Destroy', comment_path,
method: :delete,
data: { confirm: 'Are you sure?' } %></td><br>
</tr>
<% end %>
感谢您提供的任何建议:-)
当您 edit/destroy 您的评论时,您需要在 link_to
助手中传递实际的评论。 link_to 'Destroy', w, method: :delete, data: { confirm: 'Are you sure?' }
之类的东西就可以了。
与编辑类似:link_to 'Edit', edit_comment_path(w)