Using a partial inside a form_for tag

I have the following:

<% form_for @user do |f| -%>

<%= render :partial => “relationship_status” %>

<% end -%>

How do I pass f to the partial! :slight_smile: Or can I not do that?


John K.
[email protected]

Blog: http://www.kopanas.com
Conference: http://www.cusec.net
Twits: http://www.twitter.com/kopanas

On Feb 9, 8:03 am, “John K.” [email protected] wrote:

I have the following:

<% form_for @user do |f| -%>

<%= render :partial => “relationship_status” %>

<% end -%>

How do I pass f to the partial! :slight_smile: Or can I not do that?

Just pass the form to the partial as a ‘local’ like this:

<%= render :partial => “relationship_status” %, :locals => {:form =>
f } %>

You can then refer to the form in your partial like this:

<%= form.text_field … %>

Are you sure that you need to? If you are rendering relationship info
for the user, but that relationship info relies on some other model,
you might be able to:

_relationship_status.html.erb
<% fields_for :relationships, relationships do |fld| %>
<% fld.text_field … %>
<% end %>

and pass the user into the partial:

<%=
render :partial=>‘relationship_status’,
:locals=>{:relationships=>user.relationships}
%>

The main point being that if you’re rendering a partial that displays
fields for a different model then you don’t need to pass the form
variable, but a reference to that model or collection.