2013-09-18 4 views
3

Я могу передать один аргумент из представления в частичный, но по какой-то причине, когда я добавляю второй, он не определен (класс nil).Rails 4: передача нескольких аргументов частичным

Вот как я называю парциальное с точки зрения:

<%= render 'project_form', locals: {project: @project, form_method: 'patch'} %> 

Вот вершина частичного (_project_form.html.erb):

<%= logger.debug(@form_method) %> 

Это печатает «истина» в представлении , и не записывает ничего (пустую строку) в журнал.

Почему он не получает второй аргумент? Я могу отлаживать @project, и это класс, который я ожидаю.

Update: Согласно this question, вам нужно немного изменить синтаксис рендеринга передать несколько аргументов.

Итак, у меня было две проблемы: 1) область видимости переменной, 2) синтаксис render :partial должен быть явным, чтобы передавать более одной локальной переменной.

+0

если @project работает, то это, вероятно, означает, что вы даже не нужно передать его (так как это переменная экземпляра и уже доступна) –

ответ

2

Его локальная переменная, которую вы пытаетесь напечатать. Попробуйте это в вашем парциальное вместо @form_method:

<%= logger.debug(form_method) %> 

, и я думаю, что ниже будет печатать значение в вашем парциальное:

<%= form_method %> 
+1

Спасибо. Кажется, это работает. Можете ли вы помочь мне понять, почему был задан проект @project? Включает ли область экземпляра переменную автоматически в частичную? – emersonthis

+0

Да, область @project будет автоматически применена ко всем частицам, которые вы будете отображать в своем представлении. –

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