【问题标题】:"Unpermitted parameter:" error in Two Many-To-Many association with nested attributes added to whitelist already“未经允许的参数:”两个多对多关联中的错误与已添加到白名单的嵌套属性
【发布时间】:2015-10-16 17:42:21
【问题描述】:

我正在“在轨道上”迈出第一步。我在stackoverflow上查找了几个问题并使用了很多谷歌,但我似乎仍然无法解决我的问题。

我正在尝试编写一个 Rails 应用程序,让您可以管理电影列表和演员列表。电影可以有多个演员(因此一个演员可以出演多部电影)。我有两个模型MovieActor 以及联合ActorsMovie 模型。如您所见,我想建立两个多对多关系。

请在此处找到相关文件: https://gist.github.com/ecksma/f09d2a6ec631e46eafe9

即使我将params.require(:movie).permit(:title, :year, actors_attributes:[:actor_id,:name] ) 添加到movies_controller,当我尝试使用演员创建新电影时,仍会收到Unpermitted parameter: actors 错误。

命令行输出 https://gist.github.com/ecksma/f09d2a6ec631e46eafe9#file-command_line_output

当我尝试用电影创建一个新演员时,我遇到了同样的问题。演员已创建,但我得到了Unpermitted parameter: movies,尽管我将params.require(:actor).permit(:name, movies_attributes:[:title,:year,:movie_id]) 添加到actors_controller

表单和基本 CRUD 似乎有效,但我似乎无法将电影与演员联系起来,反之亦然。

对我做错了什么有什么建议吗?

【问题讨论】:

  • 你能把整个控制器和表格贴出来吗?看来您的字段有误
  • 如果您点击此链接Form,Controller,Models etc,您应该可以在 gist 中找到所有相关文件(例如整个控制器)。谢谢!

标签: ruby-on-rails ruby nested-forms nested-attributes ruby-on-rails-4.2


【解决方案1】:

您是否尝试在Movie 模型中添加accepts_nested_attributes_for :actors

【讨论】:

  • 我刚试过,它工作。非常感谢!那真的很有帮助。尽管如此,在编辑电影时还是有一种奇怪的行为。每次我将演员添加到现有电影时,最初添加到电影中的演员都会在之后列出两次。
  • 您需要在“actors_attributes”中允许“id”。当您执行 MyModel.update_attributes(params) 时,它会检查“id”。如果“id”存在,则更新记录,否则创建新记录。
  • 你太棒了,这真的帮助了我!再次感谢。
  • 不幸的是我不能。它说一旦我获得 15 名声望,我的选票就会公开显示。我还没有那个。 ://
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-19
  • 1970-01-01
相关资源
最近更新 更多