14

我读到collection_check_boxes,但我不明白,我怎么可以设置检查的值。 我有以下型号:未经许可参数4

class Objective < ActiveRecord::Base 

    has_many :indicators 
    has_many :objective_children, class_name: "Objective", foreign_key: "parent_id" 

    def objective_ids 
    objective_children.collect{|o| o.id} 
    end 

    def objective_ids= objectives_ids 
    objectives_ids.each do |id| 
     objective_children << Objective.find(id) 
    end 
    end 
end 

编辑观点:

<%= form_for(@objective) do |f| %> 
    <%= f.collection_check_boxes :objective_ids, Objective.all, :id, :name %> 
    <%= f.submit %> 
<% end %> 

的HTML复选框都OK,但我不知道如何将值设置为objective。我曾尝试定义objective_ids= objectives_ids,但没有任何反应。

在控制器:

class ObjectivesController < ApplicationController 
    def objective_params 
     params.require(:objective).permit(:name, :code, :description, :objective_ids) 
    end 
end 

编辑 日志文件说Unpermitted parameters: perspective_id, objective_ids

回答

25

我解决转产

params.require(:objective).permit(:name, :code, :description, :objective_ids) 

params.require(:objective).permit(:name, :code, :description, :objective_ids => []) 
+0

它也可以被写为'.permit(:姓名,:代码,:说明,objective_ids:[])' – user664833

3

我得到了同样的问题,试试这个行:

params.require(:objective).permit(:name, :code, :description, :objective_ids => []) 

但不工作,我改变为:

params.require(:objective).permit(:name, :code, :description, {:objective_ids => []}) 

和它的作品!