我正在使用部分视图无效,在评论#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
我觉得我对部分视图做错了,先谢谢你:)
答案 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以了解有关如何执行此操作的更多选项。