Sharing a partial between multiple controllers

I want to share a partial between 2 or more controllers.

I have a "location" partial that I want users to enter "Address, City, State, Zip" information in however I have "Payees", "Institution", and "Event" models that can have "location" information stored with them. Since I don't want to duplicate the partial across each controller, I've placed the partial in a "shared" folder however I'm having problems rendering it with the appropriate model object.

A sample of my renders look like this: <%= render :partial => 'shared/location', :object => @payee %>

A sample of my partial looks like this: <%= location.text_field :address, :size => 60 %>

Obviously rails is complaining that the object is not related to a form since I'm not using "form_for" or "fields_for" (see below for error).

"undefined method `text_field' for #<Payee:0x4472530>"

How can I make this happen while keeping it DRY?

I want to share a partial between 2 or more controllers.

I have a "location" partial that I want users to enter "Address, City, State, Zip" information in however I have "Payees", "Institution", and "Event" models that can have "location" information stored with them. Since I don't want to duplicate the partial across each controller,
I've placed the partial in a "shared" folder however I'm having problems rendering it with the appropriate model object.

A sample of my renders look like this: <%= render :partial => 'shared/location', :object => @payee %>

A sample of my partial looks like this: <%= location.text_field :address, :size => 60 %>

Obviously rails is complaining that the object is not related to a
form since I'm not using "form_for" or "fields_for" (see below for error).

"undefined method `text_field' for #<Payee:0x4472530>"

Could you just call fields_for and pass through the yielded object
instead of passing through @payee ?

Fred

Frederick Cheung wrote:

"undefined method `text_field' for #<Payee:0x4472530>"

Could you just call fields_for and pass through the yielded object instead of passing through @payee ?

Fred

How would I pass through the yielded object? I can't write
"fields_for :payee" since this partial is used by the other two models (events, institutions) as well.

When trying the following . . .

<%= render :partial => 'shared/location', :object => @payee %>

<% fields_for :location do |l| %> <%= l.text_field :address, :size => 60 %> <% end %>

The rendered HTML is showing the field ids as such "location_address", when they need to ultimately be "payee_address"

I was actually thinking of something along the lines for <% fields_for @payee do |f| %>    <%= render :partial=> 'shared/location', :object => f %> <% end >%

Frederick Cheung wrote:

I was actually thinking of something along the lines for <% fields_for @payee do |f| %>    <%= render :partial=> 'shared/location', :object => f %> <% end >%

I follow you now. A much simpler way of doing it and it solved my problem.

Thanks once again Fred