我有一个简单的部分/布局情况,其布局如下;
<div class="widget">
<%= yield %>
</div>
然后在我的视图中我将部分渲染为;
<%= render :partial => "my_partial", :layout => "my_layout" %>
在布局中,我希望能够添加部分名称(最好不要传递局部变量),以便我可以使用CSS自定义窗口小部件。
理想情况下,它会是这样的(从布局中)
<div class="widget <%= partial.name %>">
无论如何都要访问布局中正在渲染的局部名称吗?
感谢。
答案 0 :(得分:1)
为什么不创建助手?例如:
module WidgetHelper
def widget options = {}, &block
content = capture &block
# Add class 'widget' if it's not passed as a class.
(options[:class] ||= {}).tap {|classes| classes << "widget" unless classes.include?("widget")}
content_tag(:div, content, options)
end
end
无需访问文件(部分),也不需要本地变量。
<强>样品强>
= widget :class => "my_custom_class" do
= @product.comments.first.name
应该产生
<div class="my_custom_class widget">Block content</div>
答案 1 :(得分:0)
部分名称是不变的。所以只需在部分
中写出来<div class="widget my_partial">
为什么你不喜欢局部变量?