0

パーシャルインがある場合

/app/views/posts/comments/_comment.html.erb

次のことをする

<%= render @post.comments %>

@post.comments コレクションを次のように繰り返します

@post.comments.each do |comment|

コレクションをパーシャルに渡さなくても、自動的に。

ただし、オブジェクトが created_at によってソートされる方法のため、これはコメントを逆方向にレンダリングします。

方向を変えたい: でコレクションを別の方法で並べ替えてからcreated_at DESC、コメント コレクションを繰り返します。

私はするだろう

@comments = @post.comments.paginate(:page => params[:page], :per_page => 10, :order => "created_at")の代わりにPostsContollerand を使用しましたが、これを行うためのより一般的な方法があるかどうかに興味がありました。<%= render @comments %><%= @post.comments %>

前もって感謝します!

4

2 に答える 2

1

あなたは間違いなくやりたい:

@comments = @post.comments.order("created_at ASC").paginate(page: params[:page])

Rails ヘルパーの動作を変更する代わりに! どうしてそうするか?

関連付けに関するコメントの順序を定義できます。Post モデルでは:

has_many :comments, order: "comments.created_at ASC"

デフォルトのスコープを設定して、コメントのデフォルトの順序を変更することもできます。

モデルでは:

default_scope order('created_at ASC')
于 2013-01-19T01:59:48.857 に答える
1

render @post.comments.paginate(params[:page])モデルに設定された順序で、何かが機能しますか? 例えば。

class Post < ActiveRecord::Base
  has_many :comments, order: 'created_at DESC'
end
于 2013-01-19T02:35:08.210 に答える