0

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 に関係なく、最後に追加されたコメントをレンダリングしているように見えます。

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 に答える