Визуализация макета в классе помощника - PullRequest
1 голос
/ 23 февраля 2012

Я рендеринг следующего фрагмента HTML ...

<div class="navbar navbar-fixed-top">
    <div class="navbar-inner">
        <div class="container">
            <%= yield %>    
        </div>
    </div>
</div>

... вот так:

<%= render :layout => "shared/menu" do %>
    ...code here...
<% end %>

Теперь, чтобы очистить вещи еще больше, я 'Я хотел бы скрыть рендер в помощнике, чтобы иметь что-то вроде:

<%= bs_menu do %>
    ...code here...
<% end %>

Я безуспешно пытался следующий помощник:

def bs_menu(&block)
    render(:layout => "shared/menu") &block
end

Я получаю эту ошибку отrails (3.2.1):

Вы запустили рендеринг, но не указали ни один из следующих параметров: частичный,: шаблон,: встроенный,: файл или: текстовый.Что я делаю не так?

Ответы [ 2 ]

1 голос
/ 23 февраля 2012

Я думаю, вы также можете сделать это:

def bs_menu(&block)
  render({:layout => "shared/menu"}, &block)
end

(может быть, вы также можете опустить фигурные скобки).Это мой стандартный способ передачи блоков в методы.

0 голосов
/ 23 февраля 2012

ОК, я узнал, как написать помощника.Я неправильно вызывал блок:

def bs_menu(&block)
    render(:layout => "shared/menu") do
        block.call
    end
end

Я думаю, что это действительно аккуратный способ написания чистых представлений.Другой вариант - что-то вроде this .

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