Ruby on rails Rails构成元素以传递两个值

Ruby on rails Rails构成元素以传递两个值,ruby-on-rails,forms,simple-form,Ruby On Rails,Forms,Simple Form,我有一个表格可以为人们预订活动。表单垂直显示事件,并在每个事件旁边为每个可能的人显示名称和复选框 如何最好地传达每个复选框所需的两条信息?也就是说,事件id和人物id可以在下面的行中尝试,我假设你有一个多选复选框,我将一个event\u id=>plate\u id散列作为值传递给复选框 <%= check_box_tag 'booking[event_people_ids][]', {booking.event_id => booking.plate_id} %> 我不太确

我有一个表格可以为人们预订活动。表单垂直显示事件,并在每个事件旁边为每个可能的人显示名称和复选框


如何最好地传达每个复选框所需的两条信息?也就是说,事件id和人物id可以在下面的行中尝试,我假设你有一个多选复选框,我将一个
event\u id=>plate\u id
散列作为值传递给复选框

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

我不太确定我是否理解正确。这就是我假设你所说的模型:

# 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
这可能是改变事件与人的关系的一个可能的解决方案:

# 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>
#index.html.erb
重要的部分是
,在这里您可以实际更改特定人员与事件的关系

祝你好运;)

我最后做了这样一件事:

 <%= check_box_tag  "booking[]", "#{event.id}-#{person.id}" %>   
我本来希望用一种更讽刺的方式来做这件事,但这是可行的

 <%= check_box_tag  "booking[]", "#{event.id}-#{person.id}" %>   
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