передача значений в частичное в рельсах 3 - PullRequest
12 голосов
/ 11 июля 2010

Вот как я передаю значения / переменную частичному:

<%= render "partials/banner", :locals => {:text_1 => t(:"main.home.banner_text_1"),
                                          :text_2 => t(:"main.home.banner_text_2") } %>

, затем частичному:

 <%= text_1 %> <%= text_2 %>

, но получаю «неопределенная локальная переменная или метод text_1»

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

Спасибо!

Ответы [ 2 ]

28 голосов
/ 11 июля 2010

Если у вас есть что-то, что должно отображаться во всех ваших представлениях, вы также можете создать метод application_helper, Пример: banner('Text', 'Content')

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

Главная страница:

<%= render :partial => 'layouts/test',
           :locals => {:text_1 => t(:'text_1'), :text_2 => t(:'text_2')}
%>

Частично:

<%= text_1 %> <%= text_2 %>
12 голосов
/ 28 апреля 2011

Я считаю, что Rails 3 изменил способ передачи частичных переменных примерно так:

<%= render :partial => 'layouts/test',
       :text_1 => t(:'text_1'), :text_2 => t(:'text_2') %>

Rails проанализирует это, и так как: text_1 не является известным ключом (например: collection или: as), он передает это самому частичному.

Вы можете получить к нему доступ через text_1 или text_2

...