0

投稿にさまざまなタグを適用できるように、アプリにタグ付けシステムを実装しました。このような特定のタグが付いた投稿をレンダリングしています

 <% my_posts = post.find_by_tag("sports") %>
   <%= my_posts.each do |post| %>
   <%= post.title %><br />
   <%= post.body %><br />
 <% end %>

唯一の問題は、_post.html.erb パーシャルまたは show.html.erb でのみレンダリングされることです。

たとえば、_fact.html.erb のような別のパーシャルを作成しようとすると、レンダリングされません

これは、動作するページの投稿コントローラーです

   def newest
     @posts = Post.paginate(:page => params[:page], :per_page => 10)
     @title = "Newest"
     @vote = Vote.new(params[:vote])

     respond_to do |format|
       format.html
       format.json { render :json => @users }
     end
   end

そして、最新のビューで <% render :partial => @posts %> を実行しました

def sportsとsports.html.erbであるビューを除いて同じことをしたかったのですが、何らかの理由でそれを行い、@posts以外の別のパーシャルを使用すると機能しません。@facts の定義スポーツに既に行を追加したので、そうではありませんが、何が問題なのかわかりません。

プログラミングはまだ初心者なので、どんな助けでも大歓迎です、ありがとう。

4

1 に答える 1

0

Rails は、コレクションをレンダリングするよう指示すると、ある程度のマジックを実行するように見えますが、自然にマジックに懐疑的であるため、パーシャルを指定して :collection オプションを使用することを好みます。これについては、次の質問への回答で説明し ます。 rails3のテンプレートを使ったコレクション?

あなたの場合、 に_fact.html.erbパーシャルがあると仮定するとviews/things/、おそらく次のようなことをしたいと思うでしょう:

<%= render :partial => 'things/fact', :collection => @facts %>
于 2012-06-18T22:09:14.657 に答える