我有三个表示模型的html表,每行都有复选框。
有一种模型与其他三种模型有has_and_belongs_to_many
关联。我想通过复选框分配模型。我的想法是将选定模型的ID发送给控制器。
是否可以通过复选框发送到所选ID的控制器阵列并避免未选中的?因此,在控制器的行动中,我可以做类似的事情:
def action
table1_ids = params['table1']
table2_ids = params['table2']
table3_ids = params['table3']
table1_ids each do |id|
#some action
end
table2_ids each do |id|
#some action
end
table3_ids each do |id|
#some action
end
end
我的观点:
<%= form_for @player, {url: {:action => :add_details}, method: :post} do |f| %>
# some static html
<% @bases.each do |basis| %>
<tr>
<td><%= **PLACE OF CHECKBOX** %></td>
<td><%= image_tag basis.image_url(:thumb), class: 'thumbnail' %></td>
<td><%= basis.name %></td>
<td><%= basis.short_info %></td>
<% end %>
</tr>
<% end %>
答案 0 :(得分:0)
在你的参数中,你只会收到已检查项目的ID,因此控制器实际上执行了两个步骤。我有画廊,条目和照片,比如
Gallery
has_many :entries
has_many :photos, :through => :entries
并使用复选框为图库选择照片。更新时
@gallery = Gallery.find(params[:id])
photo_ids = params[:photo_ids]
photo_ids ||= []
@gallery.entries.each do |entry|
photo_id = entry.photo_id.to_s
if !photo_ids.include?(photo_id)
# existing photo isn't selected anymore
entry.delete
else
# photo is already selected, remove from selected list
photo_ids.delete(photo_id)
end
end
photo_ids.each do |photo_id|
# make a new entry for additions to gallery
entry = new Entry()
entry.gallery_id = @gallery.id
entry.photo_id = photo_id
entry.save
end