Forum: Ruby on Rails Sharing a partial between multiple controllers

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
C4b929d5f7755cd93f362f424c6c3852?d=identicon&s=25 Corey Murphy (rubylicious)
on 2008-12-02 18:24
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?
81b61875e41eaa58887543635d556fca?d=identicon&s=25 Frederick Cheung (Guest)
on 2008-12-02 18:28
(Received via mailing list)
On 2 Dec 2008, at 17:24, Corey Murphy 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
C4b929d5f7755cd93f362f424c6c3852?d=identicon&s=25 Corey Murphy (rubylicious)
on 2008-12-02 19:35
Frederick Cheung wrote:
> On 2 Dec 2008, at 17:24, Corey Murphy 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'm obviously missing something here.
81b61875e41eaa58887543635d556fca?d=identicon&s=25 Frederick Cheung (Guest)
on 2008-12-02 19:41
(Received via mailing list)
On 2 Dec 2008, at 18:35, Corey Murphy wrote:

>> Fred
> <% 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 >%
C4b929d5f7755cd93f362f424c6c3852?d=identicon&s=25 Corey Murphy (rubylicious)
on 2008-12-02 19:49
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
This topic is locked and can not be replied to.