Forum: Ruby on Rails Nested models in a form

Posted by Rafael C. de Almeida (Guest)
on 2013-01-13 19:07
(Received via mailing list)
Hello,

I'm trying to work with nested models in a form view and it's not going 
so
smoothly. A user has many lawyers and a lawyer can take many services. I
want a checkbox on which the user can select the services of each 
lawyer.
How can I do it? This is what I've got so far:

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

  <%= f.label :email %><%= f.email_field :email %>

  ....

  <% @user.lawyers.each do |lawyer| %>

    <%= f.fields_for :lawyers, lawyer do |lf| %>

      <%= lf.label :name, "Nome: " %><%= lf.text_field :name %>

      <!-- Everything is working fine so far. However, I can get this to 
work. A lawyer can have many services: -->

      <% Service.all.each do |service| %>

        <%= check_box_tag ???, service.id, 
lawyer.services.include?(service) %>

      <% end %>

    <% end %>

  <% end %>

<% end %>
Posted by Rafael C. de Almeida (Guest)
on 2013-01-13 22:02
(Received via mailing list)
I have found out that user[lawyers_attributes][0][service_ids][] works 
for
the first lawyer (I update 0 to 1 for the second and so on). However, 
that
seems rather ugly. Is thera a way to extract the path
user[lawyers_attributes][0] from lf object?
Posted by Rafael C. de Almeida (Guest)
on 2013-01-13 22:16
(Received via mailing list)
Let me send you another post the intention of documenting this issue for
people from the future. The solution I'm going with for now is:
substituting "???" for lf.object_name+"[service_ids][]". It may not be 
too
pretty, but it works (don't forget setting :service_ids in 
attr_accessible
and accept_nested_attributes_for :services).
Posted by Jim ruther Nill (jimboker)
on 2013-01-14 01:55
(Received via mailing list)
On Mon, Jan 14, 2013 at 5:15 AM, Rafael C. de Almeida
<almeidaraf@gmail.com>wrote:

> Let me send you another post the intention of documenting this issue for
> people from the future. The solution I'm going with for now is:
> substituting "???" for lf.object_name+"[service_ids][]". It may not be too
> pretty, but it works (don't forget setting :service_ids in attr_accessible
> and accept_nested_attributes_for :services).


just a reminder that you may want to test your solution for creating new
records
and for editing existing ones if you're using the same partial/template 
for
both
pages (although I think it looks like it's going to work except for the
scenario that
you try to edit and remove all services for a particular lawyer).  also,
you don't need
accepts_nested_attributes_for :services if you are using service_ids.


>>>
>>>
>>>       <% Service.all.each do |service| %>
>>>
>
>
>



--
Please log in before posting. Registration is free and takes only a minute.
Existing account (Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
No account? Register here.