ids的用法

今天在做用户可以选择兴趣爱好的时候,卡住了,参照railscasts上的教程,发现controller里面上传参数不会。 railscasts方法是这样的

<% Category.all.each do |category| %>
  <%= check_box_tag "product[category_ids][]", category.id, @product.category_ids.include?(category.id), id: dom_id(category) %>
  <%= label_tag dom_id(category), category.name %><br>
<% end %>

代码很长,请教老师后

  <%= collection_check_boxes(:user, :interest_ids, Interest.all, :id, :name) %>

http://apidock.com/rails/ActionView/Helpers/FormOptionsHelper/collection_check_boxes

collection_check_boxes(:post, :author_ids, Author.all, :id, :name_with_initial)

在controller里面的白名单要加上 interest_ids: []

补充ids是一个非常神奇的东西,面对与多对多的关系。你不需要单独建立他们的第三方关系。只要用ids的方法就是可以快速建立起第三方关系的数据。你可以在rails console里面输入u = User.first u.interest_ids = [1 ,2],就会发现rails 已经帮你建立了两个user_interest表单,分别插入数据(user_id = 1, interest_id =1)、 (user_id = 1, interest_id = 2)。