14

Ho letto circa collection_check_boxes ma non capisco come posso impostare i valori controllati. Ho il seguente modello:Parametri non ammessi nei binari 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 

modificare vista:

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

la casella di controllo HTML sono ok, ma non so come impostare i valori da objective. Sono stato provato a definire objective_ids= objectives_ids ma non succede nulla.

In Controller:

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

EDIT Il file di log dice Unpermitted parameters: perspective_id, objective_ids

risposta

25

ho risolto cambiando la linea

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

a

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

Può anche essere scritto come '.permit (: name,: code,: description, objective_ids: [])' – user664833

3

ottengo lo stesso problema, provare questa linea:

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

ma non funziona e ho Passa a:

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

e funziona !!