将部分渲染为布局

时间:2014-11-23 21:51:59

标签: ruby-on-rails

是否可以将局部渲染为布局?

目前,我在_show.html.erb下有一个部分app/views/users。在其他一些控制器中,我尝试包含layout 'users/show'以将该部分用作布局。

然而,默认情况下,Rails似乎在layouts/目录中寻找布局。我得到如下错误:

Template is missing

Missing template layouts/users/show ....

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

我认为如果您只想在另一个视图中添加部分内容,则应该使用render

<%= render partial: 'users/show' %>

也许在你的其他控制人的行动中:

@user = @some_object.user

您需要将@user传递给您的部分。您可能希望在user部分中引用局部变量users/show并传入实例变量:

<%= render partial: 'users/show', locals: {user: @user} %>

您还可以将partial和layout选项一起使用,以便部分将在指定的布局内呈现。例如,您可以指定

<%= render partial: "contact_info", layout: "users/show" %>

这会告诉contact_info部分在app/layouts/users/show.html.erb中找到的布局内呈现。