Ruby on rails ActionController::Parameters-Permit方法不返回嵌套属性的参数
我有个小问题。在下面代码的第二个示例中,您能告诉我为什么permit方法不能返回data\u set\u users\u属性和data\u set\u synch\u agents\u属性吗?这很奇怪。所有数据看起来都很好,也允许参数。两个参数_hash都是从同一个表单发送的,两个许可数据都是由同一个函数创建的 编辑:我使用Ruby 2.3.0和rails 4.2.4Ruby on rails ActionController::Parameters-Permit方法不返回嵌套属性的参数,ruby-on-rails,ruby,strong-parameters,Ruby On Rails,Ruby,Strong Parameters,我有个小问题。在下面代码的第二个示例中,您能告诉我为什么permit方法不能返回data\u set\u users\u属性和data\u set\u synch\u agents\u属性吗?这很奇怪。所有数据看起来都很好,也允许参数。两个参数_hash都是从同一个表单发送的,两个许可数据都是由同一个函数创建的 编辑:我使用Ruby 2.3.0和rails 4.2.4 require 'rails/all' # Params passes _permit = [ "configurati
require 'rails/all'
# Params passes
_permit = [
"configuration_id",
"max_packages_on_server",
"reports_synch_interval_min",
{
"data_set_users_attributes" => [
{
"0" => [
"user_id",
"send_alerts",
"_destroy"
]
},
{
"2015_09_09_15_21_50" => [
"user_id",
"send_alerts",
"_destroy"
]
}
]
},
{
"data_set_synch_agents_attributes" => [
{
"0" => [
"synch_agent_id",
"max_idle_on_data_set",
"_destroy"
]
},
{
"2015_09_09_15_21_51" => [
"synch_agent_id",
"max_idle_on_data_set",
"_destroy"
]
}
]
}
]
parameters_hash = {
"action" => "create",
"commit" => "Save",
"controller" => "data_sets",
"data_set" => {
"configuration_id" => "",
"data_set_synch_agents_attributes" => {
"0" => {
"_destroy" => "false",
"max_idle_on_data_set" => "-1",
"synch_agent_id" => "1"
},
"2015_09_09_15_21_51" => {
"_destroy" => "",
"max_idle_on_data_set" => "-1",
"synch_agent_id" => "2"
}
},
"data_set_users_attributes" => {
"0" => {
"_destroy" => "false",
"send_alerts" => "1",
"user_id" => "1"
},
"2015_09_09_15_21_50" => {
"_destroy" => "",
"send_alerts" => "1",
"user_id" => "2"
}
},
"max_packages_on_server" => "",
"reports_synch_interval_min" => ""
}
}
params = ActionController::Parameters.new(parameters_hash)
p params.require(:data_set).permit(_permit)
# Params not passes
_permit = [
"configuration_id",
"max_packages_on_server",
"reports_synch_interval_min",
{
"data_set_users_attributes" => [
{
"0" => [
"user_id",
"send_alerts",
"_destroy"
]
},
{
"1" => [
"user_id",
"send_alerts",
"_destroy"
]
}
]
},
{
"data_set_synch_agents_attributes" => [
{
"0" => [
"synch_agent_id",
"max_idle_on_data_set",
"_destroy"
]
},
{
"1" => [
"synch_agent_id",
"max_idle_on_data_set",
"_destroy"
]
}
]
}
]
parameters_hash = {
"action" => "create",
"commit" => "Save",
"controller" => "data_sets",
"data_set" => {
"configuration_id" => "",
"data_set_synch_agents_attributes" => {
"0" => {
"_destroy" => "false",
"max_idle_on_data_set" => "-1",
"synch_agent_id" => "1"
},
"1" => {
"_destroy" => "false",
"max_idle_on_data_set" => "-1",
"synch_agent_id" => "2"
}
},
"data_set_users_attributes" => {
"0" => {
"_destroy" => "false",
"send_alerts" => "1",
"user_id" => "1"
},
"1" => {
"_destroy" => "false",
"send_alerts" => "1",
"user_id" => "2"
}
},
"max_packages_on_server" => "",
"reports_synch_interval_min" => ""
}
}
params = ActionController::Parameters.new(parameters_hash)
p params.require(:data_set).permit(_permit)
任何帮助都将不胜感激。
致以最诚挚的问候如果我答对了,您需要尝试以下方法:
params.require(:data_set).permit(
:max_packages_on_server,
:reports_synch_interval_min,
data_set_synch_agents_attributes: [:synch_agent_id, :max_idle_on_data_set, :_destroy],
data_set_users_attributes: [:send_alerts, :user_id, :_destroy])
获取更新模型的参数。如果我没有弄错,您需要尝试以下操作:
params.require(:data_set).permit(
:max_packages_on_server,
:reports_synch_interval_min,
data_set_synch_agents_attributes: [:synch_agent_id, :max_idle_on_data_set, :_destroy],
data_set_users_attributes: [:send_alerts, :user_id, :_destroy])
获取更新模型的参数。您能给出
生成\u允许\u参数的完整输出吗?更详细地说,你的模型是什么这是我的密码。模型和控制器方法“生成许可证参数”您能给出生成许可证参数的完整输出吗?更详细地说,你的模型是什么这是我的密码。模型和控制器方法“生成参数”