2011-03-29 63 views
2

我有一个简单的局部/布局情况,布局如下;如何从Rails中的布局中访问部分的名称

<div class="widget"> 
    <%= yield %> 
</div> 

然后在我的视图中,我渲染一个部分为;

<%= render :partial => "my_partial", :layout => "my_layout" %> 

从布局中,我希望能够增加部分的名称(最好不经过局部变量),这样我可以使用CSS自定义窗口小部件。

理想的情况下,它会是这样的(从布局内)

<div class="widget <%= partial.name %>"> 

反正是有访问正在从布局中呈现局部的名字吗?

谢谢。

回答

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> 
0

部分名称是不变的。因此,只是写在部分

<div class="widget my_partial"> 

为什么你不喜欢局部变量?

+0

这并不是说我不喜欢局部变量,其更多的,我想是通过约定,而不是规范。 – cosullivan 2011-03-29 13:39:32