1

Rails 3.1 でコメントのコレクションをレンダリングしようとしていますが、コレクションの最初のコメントのみが Web ページに表示されます (コメントは考えに関連付けられています)。

まず、コメント コントローラー:

def index
  @comments = Comment.find_by_thought_id(params[:thought_id])
  respond_to do |format|
    format.html
    format.js
  end
end

次に、ビュー index.js.erb

$("#thought_<%= params[:thought_id] %>").append("<%= escape_javascript(render'index') %>").effect("highlight", {}, 3000);

インデックスをレンダリングしているので、今度は _index.html.erb に

<div id="comments_<%= params[:thought_id] %>">
  <%= render @comments %>
</div>

そして最後に _comment.html.erb

<%= div_for comment do %>
  Posted <%=time_ago_in_words(comment.created_at)%> ago<br />
  <%= link_to 'Delete', comment_path(comment), :method => :delete, :class => "delete", :remote => true  %>
  <%= content_tag(:p, comment.description, :class => "comment-body") %>
<% end %>

Rails から 1 つのコメントしか返されないのはなぜですか?

前もって感謝します

4

2 に答える 2

1

それ以外の:

Comment.find_by_thought_id

試す:

Comment.find_all_by_thought_id
于 2012-04-23T18:04:27.917 に答える
0
1.9.3-head :035 > Tag.find_by_name('ruby')
  Tag Load (0.3ms)  SELECT "tags".* FROM "tags" WHERE "tags"."name" = 'ruby' LIMIT 1
 => #<Tag id: 1231, name: "ruby", created_at: "2012-04-23 10:25:07", updated_at: "2012-04-23 10:25:07"> 
1.9.3-head :036 > Tag.where(:name => 'ruby')
  Tag Load (1.4ms)  SELECT "tags".* FROM "tags" WHERE "tags"."name" = 'ruby'
 => [#<Tag id: 1231, name: "ruby", created_at: "2012-04-23 10:25:07", updated_at: "2012-04-23 10:25:07">, #<Tag id: 2420, name: "ruby", created_at: "2012-04-23 18:21:35", updated_at: "2012-04-23 18:21:35">]

find_by_nameのような動的ファインダーを実行する場合、このLIMIT 1に注意してください。

動的メソッドではないため、whereを使用する方が高速です。

于 2012-04-23T18:24:45.640 に答える