2011-03-29 2 views
2

간단한 부분/레이아웃 상황이 있습니다. 레이아웃은 다음과 같습니다.레일에서 레이아웃 내에서 부분 이름에 액세스하는 방법

<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

관련 문제