Недопустимые параметры в rails 4

Я читал о collection_check_boxes, но я не понимаю, как я могу установить проверенные значения. У меня есть следующая модель:

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 в порядке, но я не знаю, как установить значения 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


person Cristhian Boujon    schedule 31.07.2013    source источник


Ответы (2)


Я решил изменить строку

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

to

params.require(:objective).permit(:name, :code, :description, :objective_ids => [])
person Cristhian Boujon    schedule 01.08.2013
comment
Его также можно записать как .permit(:name, :code, :description, objective_ids: []) - person user664833; 11.06.2014
comment
Это работает до тех пор, пока у вас есть :objective_ids =› [] в качестве последнего элемента. Если вы поместите его между другими символами, вы получите синтаксическую ошибку. Те, кто увидел синтаксическую ошибку, поместите его последним элементом, и ошибка исчезнет. - person Asad Shakil; 01.07.2020

У меня такая же проблема, попробуйте эту строку:

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

но не работает, и я меняю на:

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

и это работает !!

person user391990    schedule 03.05.2014