Search code examples
ruby-on-rails-3renderpartial

can't pass locals to parital Rails


I have a partial _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 %>

In the show.rb I want to use it and pass in some partial variables as follows:

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

However I get this error:

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

I read the documents about passing in locals and this seems correct. What am I doing wrong?


Solution

  • You're combining the short and long forms. Either of these are correct (identical):

    render 'my_partial', :foo => 'bar'
    
    render :partial => 'my_partial', :locals => { :foo => 'bar' }