我读到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
答案 0 :(得分:27)
我解决了改变行
的问题params.require(:objective).permit(:name, :code, :description, :objective_ids)
到
params.require(:objective).permit(:name, :code, :description, :objective_ids => [])
答案 1 :(得分:3)
我遇到同样的问题,试试这一行:
params.require(:objective).permit(:name, :code, :description, :objective_ids => [])
但不起作用,我改为:
params.require(:objective).permit(:name, :code, :description, {:objective_ids => []})
它有效!!