如何从Rails中的布局中访问部分的名称

时间:2011-03-29 11:41:23

标签: ruby-on-rails ruby-on-rails-3

我有一个简单的部分/布局情况,其布局如下;

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

然后在我的视图中我将部分渲染为;

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

在布局中,我希望能够添加部分名称(最好不要传递局部变量),以便我可以使用CSS自定义窗口小部件。

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

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

无论如何都要访问布局中正在渲染的局部名称吗?

感谢。

2 个答案:

答案 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">

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