2011-03-29 62 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