не может передать местных жителей в родовые рельсы - PullRequest
1 голос
/ 02 сентября 2011

У меня есть частичный _new_user_form.html.erb

<%= form_for(@user, :remote => true, :html => {:id => 'new_user_form'}) do |f|%>
  <strong><%= :form_text %></strong>
  <%= f.text_field :email, :placeholder =>  get_placeholder_text(@board), :size => "30" %>
  <%= hidden_field_tag :role, role %>
  <%=f.submit "SAVE", :class => "button-small" %>
<% end %>

В show.rb я хочу использовать его и передать некоторые частичные переменные следующим образом:

<%= render  'users/new_user_form', :locals=> {:role => "Celebrant" } %>

Однако я получаюэта ошибка:

undefined local variable or method `role' for #<#<Class:0x00000103d5e8b0>:0x00000103d5b930>

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

Ответы [ 2 ]

5 голосов
/ 02 сентября 2011

Вы комбинируете короткие и длинные формы.Любое из них является правильным (идентичным):

render 'my_partial', :foo => 'bar'

render :partial => 'my_partial', :locals => { :foo => 'bar' }
3 голосов
/ 02 сентября 2011

Я думаю, что вы звоните render неправильно.Из тонкого руководства :

Если хэш опций не передан или не указан :update, по умолчанию визуализируется частичное и используется второй параметр в качестве хэша локальных данных.

Таким образом, вы заканчиваете тем, что спускаетесь по этой ветви в источнике:

view_renderer.render_partial(self, :partial => options, :locals => locals)

, и это делает ваш вызов таким же, как это:

render :partial => 'users/new_user_form', :locals => { :locals => { :role => 'Celebrant } }

Обратите внимание надополнительный уровень вложенности для :locals.Попробуйте это:

render 'users/new_user_form', { :role => 'Celebrant' }

Я смотрю (и использую) 3.1, чтобы ваша версия могла немного отличаться.

...