0

I have a form that takes bookings for an event for people. The form displays events vertically, and a name & checkbox for each of the possible people next to each event.

How should I best convey the two pieces of information that i need per checkbox? that is, the event_id and the person_id

3 Answers 3

2

I'm not totally sure wether I got you right. This is the model I assume you're talking about:

# event.rb

class Event
  has_many :people
  scope :possible_people, -> { #whatever .. }
end

# person.rb

class Person
  belongs_to :event
end

# events_controller.rb

class EventsController
  def index
    @events = Event.all
  end
end

And this might be a possible solution to change an events relation to people:

# index.html.erb

<ul id="events">
  <% @events.each do |event| %>
    <li class="event">
      <%= form_for @event do |form| %>
        <% event.possible_people.each do |person| %>
          <%= check_box_tag "event[person_ids][]", person.id, @event.people.include?(person) %>
        <% end %>
        <%= f.submit_tag 'Save Event' %>
      <% end %>
    </li>
  <% end %>
</ul>

The important part is <%= check_box_tag "event[person_ids][]", person.id, @event.people.include?(person) %> where you actually change the the relation of a specific person to the event.

Good luck ;)

Sign up to request clarification or add additional context in comments.

Comments

0

Well, you can try out something like below line, I am assuming you have a multiselect checkboxes and i am passing a Hash of event_id => plate_id as value to checkbox.

<%= check_box_tag 'booking[event_people_ids][]', {booking.event_id => booking.plate_id} %>

You will get the value in params as:

booking => {event_people_ids =>["{"72"=>"3"}}

Comments

0

I ended up doing this:

 <%= check_box_tag  "booking[]", "#{event.id}-#{person.id}" %>   

and then in then to process them:

params[:booking].each do |booking|
    booking = booking.split('-')
    a = {
        :booking_id  => @booking.id,
            :person_id    => booking[1],
            :event_id    => booking[0]          
   }
   Appointment.create(a)      
end 

I was hoping for a more railish way to do it but this works.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.