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