0

動作していない部分ビューを使用しています。review#newアクションで、fromがあり、post部分ビューを呼び出しています。

<%= form_for @review do |f| %>

    <div>
    <%= field_with_error @review, :content do %>
    <%= f.label :content %><br />
    <%= f.text_area :content %>
    <% end -%>
    </div>

    <%= field_with_error @review, :score do %>
    <%= f.label :score %>
    <%= f.text_field :score %>
    <% end -%>

   <p><%= submit_tag 'Post Review'%> </p>
  <% end %>
     </div>

    <ul >
     <%= render :partial => "post", :locals => {:review =>  @reviews}  %>
   </ul> 

レビュー#新しいコントローラー:

  def new
      @review = Review.new(:restaurant_id => params[:restaurant_id])   
      @reviews = Review.all
  end

そしてreview#_postは次のようになります:

<%= content_tag_for(:li, review) do %>
  <p ><%= "#{review.first_name}" %></p>
  <p ><%= review.content %></p>
  <span >Posted at <%= review.created_at %> ago.
  (<%= link_to 'Delete', post, :confirm => 'Are you sure?', :method => :delete %>)</span>
<% end %>

エラーが発生します:

undefined method `model_name' for Array:Class

私は部分的なビューでsth間違っていると思います、事前にありがとう:)

4

1 に答える 1

0

あなたの見解では:

<ul >
  <%= render :partial => "post", :locals => {:review =>  @reviews}  %>
</ul> 

@reviewsここでは、モデルではなく配列を渡します@reviewsここの最後にあるを削除する@reviewsと、機能するはずです。:)

編集:のすべてのレビューのリストをレンダリングしたい場合は@reviews、次のようにすることができます:

<ul >
  <%= render :partial => "post", :collection => @reviews  %>
</ul>

これを行う方法のその他のオプションについては、パーシャルに関するドキュメントを確認してください。

于 2012-08-01T02:41:36.097 に答える