我打电话给:
render @users, :layout => "homepage"
因为我想为主页(views / users / _homepage.html.erb)使用自定义布局包装用户的默认部分(views / _user.html.erb)。
但是,当我这样做时,我在user.name方法上得到了NoMethodError。
由于某种原因,似乎用户变量未在用户部分内正确初始化。
事实证明,经过一些测试,主页部分甚至没有被调用,它直接向用户部分....
这不是我想要的解决方案,我相信实际上可能有一种方法只使用渲染调用来完成这项工作,但这就是给我正确输出的原因:
@users.each do |user|
render :partial => "users/user",
:layout => "users/homepage",
:locals => { :user => user }
end
或者是:layout选项仅在渲染单个资源而不是集合时有效吗?
尝试添加:as => :user
以从视图渲染部分:
<%= render :collection => @users, :as => :user, :partial => 'users/user_short_form', %>
你应该做点什么
<%= render 'homepage', :collection => @users, :layout => 'homepage' %>
不确定:layout选项,但你必须传递@users thro:collection
希望能帮助到你!
不确定这是否是Rails的新增功能,但在Rails 4.2.1中我可以将我的集合传递给partial
的render
参数:
render partial: @users, layout: "homepage"