数组的未定义方法`model_name':类,部分视图

时间:2012-08-01 02:21:57

标签: ruby ruby-on-rails-3.1 partial-views

我正在使用部分视图无效,在评论#new action,我有一个来自我正在调用帖子局部视图:

<%= 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> 

在评论#new controller:

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

并查看#_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

我觉得我对部分视图做错了,先谢谢你:)

1 个答案:

答案 0 :(得分:0)

在您看来,您有:

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

您在这里传递@reviews这是一个数组,而不是模型@review。在此处删除s末尾的@reviews,它应该有效。 :)

编辑:如果您要在@reviews中呈现所有评论的列表,您可以执行以下操作:

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

检查documentation on partials以了解有关如何执行此操作的更多选项。