【问题标题】:How to insert nested params into main params如何将嵌套参数插入主参数
【发布时间】:2017-03-29 15:03:55
【问题描述】:

我正在构建一个使用 Rails 5 作为后端的 Backbone/Marionette Web 应用程序。我正在发送带有嵌套属性的表单数据。不幸的是,这些嵌套属性是在 :goal 参数之外添加的。如何在保存之前将它们插入主 (:goal) 参数中?否则它们会被忽略并且不会插入到数据库中。

这些是我发送到服务器的参数:

{"id"=>"7", "title"=>"ReBook", "gtype"=>"personal", "starts_at"=>"2017-03-03", "ends_at"=>"2017-10-03", "status"=>"completed", "user_id"=>1, "user_name"=>"Mike", "likes"=>0, "starts_at_formatted"=>"2017-03-03", "ends_at_formatted"=>"2017-10-03", "goalresults_attributes"=>{"description"=>"rrr", "progress"=>"333"}, "goal"=>{"id"=>"7", "user_id"=>1, "title"=>"Rebook", "gtype"=>"personal", "starts_at"=>"2017-03-03", "ends_at"=>"2017-10-03", "status"=>"completed"}}

【问题讨论】:

  • 我假设您使用的是强参数。你能从你的控制器发布相关代码吗?

标签: ruby-on-rails ruby


【解决方案1】:
params['goal']['user_name'] = params['user_name']
params['goal']['likes'] = params['likes']
params['goal']['starts_at_formatted'] = params['starts_at_formatted']
params['goal']['goalresults_attributes'] = params['goalresults_attributes']
params['goal']['progress'] = params['progress']

在你做之前把这个放在update_attributes

它非常肮脏/丑陋。但它会完成工作

【讨论】:

  • 我不会这样做。他应该使用强参数。
  • @mmichael 您仍然可以使用强参数。只要您在permitrequire 之前执行此操作。只是随机播放
  • 如果他正确地构建了他的强参数(并且正在使用accepts_nested_attributes_for),他应该不需要像那样手动组合它们。
  • @mmichael 我同意这是要走的路。除了来自表单的参数外,表单没有正确嵌套。如此强大的 params 和 accept_nested_attributes_for 根本不会做任何事情。正确的解决方法是修改表单或在服务器端手动嵌套它们。然后你可以通过所有适当的渠道运行它们
  • 同意,除非他用代码编辑他的问题,否则我们将无法提供帮助:|
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-11-11
  • 1970-01-01
  • 2017-05-03
  • 1970-01-01
  • 1970-01-01
  • 2020-03-24
  • 1970-01-01
相关资源
最近更新 更多