我有一个属于User和Story的Comment模型。创建与相应的用户和故事正确关联的评论工作正常,但在尝试编辑评论时,我的编辑操作似乎检索到错误的记录。
comments_controller.rb中的违规行为:
def edit
@story = Story.find_by(params[:story_id])
@comment = @story.comments.find_by(params[:id])
end
用于呈现评论/编辑视图的链接:
<%= link_to 'edit', edit_story_comment_path(comment.story_id, comment.id) %>
相应的观点:
<%= form_for(@comment, url: { controller: 'comments', action: 'update' }) do |f| %>
<%= f.text_area :content %>
<%= f.submit "update" %>
<% end %>
无论我尝试编辑哪个@comment,编辑视图似乎都会呈现最近添加的评论。
答案 0 :(得分:0)
您正在使用find_by
,这基本上是一种神奇的find_by_X
方法,没有指定字段。 find_by(1)
使用Postgres为我生成无效的SQL,但可能是您使用的任何数据库后端都接受它。
无论如何,find_by
肯定不会做你想做的事。
如果您想通过find
查找记录,则应该使用id
:
@story = Story.find(params[:story_id])