2009-09-02 3 views
2

Работая над моим первым проектом Rails, я использовал Nifty-генераторы Райана Бейтса для создания исходных файлов приложений. Это дает мне LayoutHelper с методом название:Nifty Generators LayoutHelper Issue

def title(page_title, show_title = true) 
    @content_for_title = page_title.to_s 
    @show_title = show_title 
end 

На мой взгляд домашней страницы, у меня есть простой заголовок:

<%= title "Welcome" -%> 

И, наконец, в моем макете (application.html.erb), у меня есть:

<%- if show_title? -%> 
    <h1><%=h yield(:title) %></h1> 
<%- end -%> 

<%= yield %> 

Что я вижу, это мой заголовок «Добро пожаловать», за которым следует значение, прошедшее (или по умолчанию) для show_title. Мне нужен первый, но не последний. Я понимаю, почему логическое значение неявно возвращается методом, но я не ожидал его отображения. Кажется, что логический дисплей отображается как часть основного содержимого yield.

yield Команда до сих пор на самом деле не щелкнул для меня пока (я получаю, я просто не получить его, если это имеет смысл), поэтому я надеюсь, что кто-то может помочь мне понять, почему логическое печатается и как я могу остановить его. Этот ответ может помочь мне лучше понять, как yield работает в дополнение к решению непосредственной проблемы.

Спасибо.

+0

Я действительно путаюсь, почему шаблон вызывает 'yield (: title)', когда вы не выполняете вызов 'content_for' в любом месте, но устанавливаете переменную экземпляра. Возможно, я недостаточно понимаю, как работает доходность. Надеюсь, сам г-н Бейтс вступит сюда и поможет в этом :) – theIV

+0

Мои знания о Ruby по-прежнему очень важны в этой неудобной фазе получения информации, но метод title в LayoutHelper устанавливает значение для @content_for_title. Разве это не будет достаточным для заполнения урожая или есть что-то еще, что мне не хватает? –

ответ

3

Попробуйте это:

<% title "Welcome" %> 

Вы хотите вызвать метод title, не выписывают возвращаемое значение при вызове его.

Смежные вопросы