图库,类别是使用脚手架生成的,我没有对控制器进行任何更改,他们有一个has_and_belongs_to_many关联,并且连接表已存在。类别已经存在,我想将它添加到我正在创建的图库中以下代码来自的表格。
下拉菜单显示数据库中的所有类别。我想将数据提交到数据库,也就是说我希望在创建新图库时包含两个ID的连接表中有一个新条目
这是我的表格:
#_form.html.erb (For Galleries)
<div class="dropdown">
<%= f.label "Choose Category" %>
<%= f.select :id, Category.all.map{|g,v| [g.name,g.id]}, :class => 'dropdown-menu' %> </div>
<div class="actions">
<%= f.submit %>
</div>
有人可以告诉我为了让它有效,我必须对控制器进行哪些更改?
答案 0 :(得分:0)
结帐http://guides.rubyonrails.org/association_basics.html。我认为它解释的非常好。
我想它应该是这样的:
category = Category.find_by(name: params[:name])
category.galleries.build(attributes)
答案 1 :(得分:0)
我试图帮助我理解你需要将id保存到另一张桌子吗?
<%= f.select :ids, options_from_collection_for_select(Category.all.sort_by(&:name), :id, :name, f.object._ids), {}, include_blank: true, multiple: true%>
控制器的参数
params.require(:sampletable).permit(:name, :ids => [])
如果我错了,请纠正我,我想帮助你,谢谢
答案 2 :(得分:0)
由于分步指南,我确实找到了解决方案。
categories_controller:
@galleries = Gallery.all
#had to add that to edit & new
#category_params
params.require(:category).permit(:name, :gallery_ids =>[])
gallery_controller:
#new,edit
@categories = Category.all
#category_params
params.require(:gallery).permit(:title, :image, :description, :category_ids =>[])
类别观点:
#_form.html.erb
<div class="field">
<%= collection_check_boxes(:category, :gallery_ids, @galleries, :id, :title) %>
</div>
#index.html.erb
<p><%= category.galleries.map {|g| g.title}.join(', ') %></p>
#show.html.erb
<%= @category.galleries.map {|g| g.title}.join(', ') %>
图库视图:
#_form.html.erb
<%= collection_check_boxes(:gallery, :category_ids, @categories, :id, :name) %>
#index.html.erb
<p><%= gallery.categories.map {|c| c.name}.join(', ') %></p>
#show.html.erb
<%= @gallery.categories.map {|c| c.name}.join(', ') %>
它现在正在运作。