我有一个具有以下关联的表单:
Course.rb
has_and_belongs_to_many :skills
技能.rb
has_and_belongs_to_many :courses
我想做的是允许想要添加新类(class)
的人从他选择的类别中选择所有技能,并能够通过使用复选框来添加它们。在我看来,我是这样做的:
查看
<%= form_for(@course) do |f| %>
<% @skills.each do |s| %>
<%= f.check_box :value => s.id %> <%= s.title %><br />
<% end %>
<% end %>
很遗憾,这不起作用,我收到以下错误:
undefined method `{:value=>9}' for #<Course:0x00000004ce0208>
你能帮我找到解决问题的方法吗?
谢谢。
最佳答案
在 Rails 4 中现在有一个很棒的 collection_check_boxes
表单辅助方法。
来自Rails API docs :
<%= form_for @post do |f| %>
<%= f.collection_check_boxes :author_ids, Author.all, :id, :name_with_initial %>
<%= f.submit %>
<% end %>
在你的设置中,它可能是这样的:
<%= form_for @course do |f| %>
<%= f.collection_check_boxes :skill_ids, Skill.all, :id, :name %>
<%= f.submit %>
<% end %>
collection_check_boxes
最酷的地方在于它是可选的[占用一个 block ](
http://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html#method-i-collection_check_boxes ) 让您自定义生成的标记(例如出于样式目的):
collection_check_boxes(:post, :author_ids, Author.all, :id, :name_with_initial) do |b|
b.label(:"data-value" => b.value) { b.check_box + b.text }
end
关于ruby-on-rails - 如何使用 Rails 4 以一种形式添加多个多对多字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23814740/