在rails 4中,我想在页面的任何位置渲染部分(比如页脚)。
在home_controller.rb中,我在一个类中有这个:
def spree_application
@test = render :partial => 'spree/shared/footer'
end
当我进入索引页面并添加:
<%= @test %>
什么都没发生。我知道我可以在索引页面内渲染,但我问是否有办法将渲染的链接分配给变量。
谢谢!
编辑:我对这个问题犯了一个错误。我已定义:spree_application
答案 0 :(得分:10)
您正在寻找render_to_string
答案 1 :(得分:9)
Controller render
方法与视图方法不同。您想在视图上下文中执行它:
@test = view_context.render 'spree/shared/footer'
此方法与render_to_string
之间的主要区别在于,它返回html_safe字符串,因此&lt;%= @ test%&gt;中的html标记不会被逃脱。
更新:
然而,这不是处理问题的正确方法。您正在寻找&#39; content_for&#39;。此方法允许您构建视图的一部分,可以在布局中使用。您需要做的就是修改布局:
# Your application layout
<html>
<head>
...
</head>
<body>
yield :image
<div id="wrapper">
yield
</div>
</body>
</html>
然后在您的视图中,您可以使用
指定要显示为yield :image
的内容
<% content_for :image do %>
<%# Everything here will be displayed outside of the wraper %>
<% end %>