我想在表单上创建一个下拉选择。我有教授和教室之间的HABTM协会:HABTM关联下拉选择
课堂教学模式:
class Classroom < ApplicationRecord
has_and_belongs_to_many :professors
end
型号教授:
class Professor < ApplicationRecord
has_and_belongs_to_many :classrooms
end
强PARAMS:
def classroom_params
params.require(:classroom).permit(:name, :professor_ids => [])
end
我试图找到一个在表格里面使用f.select
而不是select_tag
。但是当我这样做时,数据库不会保存这些值。这样的工作:
<%= form_for @classroom do |f| %>
<%= f.label :name %><br>
<%= f.text_field :name %><br>
<% array = Professor.all.map { |professor| [professor.user.name, professor.id] } %>
<%= select_tag "classroom[professor_ids][]", options_for_select(array) %>
<% end %>
但我想这样的,它不工作:
<%= form_for @classroom do |f| %>
<%= f.label :name %><br>
<%= f.text_field :name %><br>
<% array = Professor.all.map { |professor| [professor.user.name, professor.id] } %>
<%= f.select :professor_ids, options_for_select(array) %>
<% end %>
视图工作正常,但是当我提交表单,价值不进入到classroom_params。我试图调试它停止控制器提交后,我得到了这一点:
的PARAMS与提交的所有资料正确地来了,但classroom_params来到缺少professor_ids。 有没有办法使用f.select
来做这个下拉菜单?
什么是控制器中的'cfg'?请附上控制器代码。 –
这只是我写的停止它,然后在提示中看到参数。 –