如何使用集合的局部布局?轨道

问题描述 投票:3回答:4

我打电话给:

render @users, :layout => "homepage"

因为我想为主页(views / users / _homepage.html.erb)使用自定义布局包装用户的默认部分(views / _user.html.erb)。

但是,当我这样做时,我在user.name方法上得到了NoMethodError。

由于某种原因,似乎用户变量未在用户部分内正确初始化。

事实证明,经过一些测试,主页部分甚至没有被调用,它直接向用户部分....

ruby-on-rails layout collections partials
4个回答
3
投票

这不是我想要的解决方案,我相信实际上可能有一种方法只使用渲染调用来完成这项工作,但这就是给我正确输出的原因:

@users.each do |user|
  render :partial => "users/user",
         :layout => "users/homepage",
         :locals => { :user => user }
end

或者是:layout选项仅在渲染单个资源而不是集合时有效吗?


1
投票

尝试添加:as => :user以从视图渲染部分:

<%= render :collection => @users, :as => :user, :partial => 'users/user_short_form', %>


0
投票

你应该做点什么

<%= render 'homepage', :collection => @users, :layout => 'homepage' %>

不确定:layout选项,但你必须传递@users thro:collection

希望能帮助到你!


0
投票

不确定这是否是Rails的新增功能,但在Rails 4.2.1中我可以将我的集合传递给partialrender参数:

render partial: @users, layout: "homepage"
© www.soinside.com 2019 - 2024. All rights reserved.