0

我有一个属于用户和故事的评论模型。创建与适当的用户和故事正确关联的评论工作正常,但是在尝试编辑评论时,我的编辑操作似乎检索了错误的记录。

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,编辑视图似乎都在呈现最近添加的评论。

4

1 回答 1

0

您正在使用find_by,这基本上是一种神奇的find_by_X方法,没有指定任何字段。find_by(1)使用 Postgres 为我生成无效的 SQL,但可能是您使用的任何数据库后端都接受它。

无论如何,find_by肯定不会做你想做的事。

find如果您想通过以下方式查找记录,您应该使用id

@story = Story.find(params[:story_id])
于 2013-09-17T20:54:55.630 回答