我打电话给:
render @users, :layout => "homepage"
因为我想用仅用于主页的自定义布局(views/users/_homepage.html.erb)包装用户的默认部分(views/_user.html.erb)。
但是,当我这样做时,我在 user.name 方法上得到 NoMethodError 。
由于某种原因,用户变量似乎没有在用户部分中正确初始化。
事实证明,经过一些测试,主页部分甚至没有被调用,它直接进入用户部分....
我打电话给:
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 选项仅在呈现单个资源而不是集合时才有效?
截至 2019 年 9 月,在 Rails 6 中,我们是这样做的:
<%= render partial: 'homepage_user_list_entry', collection: @users %>
使用别名:
<%= render partial: 'homepage_user_list_entry', collection: @banned_users, as: :user %>
希望这对未来的搜索者有帮助,对我也有帮助。
尝试添加: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"