我打电话:如何在集合中使用局部布局? Rails的
render @users, :layout => "homepage"
,因为我想换只为主页(视图/用户/ _homepage.html自定义布局的默认部分用户(视图/ _user.html.erb)。 ERB)。
但是,当我这样做时,我得到了user.name方法的NoMethodError。
出于某种原因,用户变量似乎没有在用户部分内正确初始化。
原来一些测试后,部分网页甚至没有得到调用,它直接将用户部分....
我打电话:如何在集合中使用局部布局? Rails的
render @users, :layout => "homepage"
,因为我想换只为主页(视图/用户/ _homepage.html自定义布局的默认部分用户(视图/ _user.html.erb)。 ERB)。
但是,当我这样做时,我得到了user.name方法的NoMethodError。
出于某种原因,用户变量似乎没有在用户部分内正确初始化。
原来一些测试后,部分网页甚至没有得到调用,它直接将用户部分....
这不是我想要的解决方案,我相信有可能实际上是一种方法,使只使用一个电话来呈现这项工作,但是这是什么给了我正确的输出:
@users.each do |user|
render :partial => "users/user",
:layout => "users/homepage",
:locals => { :user => user }
end
或者是它只有在渲染单个资源而不是集合时才能使用:layout选项?
我只是在寻找一种方法来做同样的事情,你的方式似乎是现在唯一的方法。 http://api.rubyonrails.org/classes/ActionView/PartialRenderer.html获取更多信息 - 如果你在底部检查,render_collection和render_partial是两种完全不同的方法。 – Andrey
你应该这样做
<%= render 'homepage', :collection => @users, :layout => 'homepage' %>
不知道关于:布局选项,但你必须通过@users thro:收集
希望它有帮助!
我得到:未定义的局部变量或方法'用户' – jakeonrails
可能,使用:作为选项罗伯特建议将与这个特定的建议。 – jakeonrails
尝试增加:as => :user
渲染的部分从一个观点:
<%= render :collection => @users, :as => :user, :partial => 'users/user_short_form', %>
阅读完文档后:as选项告诉Rails,您传递的参数作为参数,在本例中,@users将被命名为您所设置的任何内容:as,作为局部变量。 但我不认为这回答了原始问题,但在使用'render'方法时如何使用布局和集合。 – jakeonrails
不知道这是一个新的除了Rails的,但在Rails的4.2.1,我可以通过我收集到partial
说法的render
:
render partial: @users, layout: "homepage"
哦,和间隔不会工作,因为我需要包装用户部分的一些布局代码,而不仅仅是把东西在每个用户之间。 – jakeonrails
你从哪里调用这个渲染语句? –
从主页控制器视图中调用索引。 – jakeonrails