Как я могу получить доступ к имени частичного из макета в Rails - PullRequest
2 голосов
/ 29 марта 2011

У меня есть простая частичная / макетная ситуация, где макет выглядит следующим образом:

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

и затем, на мой взгляд, я представляю частичное как;

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

Из макета я хочу добавить имя частичного (желательно без передачи локальных переменных), чтобы я мог настроить виджет с помощью CSS.

В идеале это было бы что-то вроде этого (из макета)

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

Есть ли в любом случае доступ к имени фрагмента, который отображается в макете?

Спасибо.

Ответы [ 2 ]

1 голос
/ 29 марта 2011

Почему бы вам не создать помощника? Нечто подобное:

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 голосов
/ 29 марта 2011

Частичное имя - это нечто постоянное. Так что просто напишите правильно в частичном

<div class="widget my_partial">

а почему вам не нравятся локальные переменные?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...