Richard Holland
Richard Holland

Reputation: 2683

Rails 3 best_in_place Edit Nested Model

Given

<% @incidents.each_with_index do |incident,i| %>

I can't figure out how to in place edit attributes on incident and parent associations such as incident.user or incident.contact

This works for example:

best_in_place incident, :notes, type: :input,  nil: 'Add Note'

But I can't figure out how to do incident.customer to get a drop down of Customer.all (incident belongs_to :customer)

I get various errors each way I try it.

Upvotes: 0

Views: 523

Answers (1)

snowangel
snowangel

Reputation: 3462

If I understand you correctly, in your controller's show action, or wherever's relevant:

@customer = Customer.all.map { |c| [c.id, c.customer_name] } # or whatever the customer name attribute is

In your view:

= best_in_place incident, :notes,  :type => :select, :collection => @customer

This produces the [[a,b], [c,d]] format that the docs say is needed.

It would be less wordy with Customer.pluck(:id, :name) but that's only in Edge Rails at the time of writing (link to guides).

Upvotes: 1

Related Questions