Ruby on rails Rails:嵌套表单不创建记录

Ruby on rails Rails:嵌套表单不创建记录,ruby-on-rails,ruby,nested-forms,Ruby On Rails,Ruby,Nested Forms,我试图建立一个表单来创建一个有四个不同玩家实例的游戏。我构建了一个嵌套表单,它将四组玩家字段呈现给游戏表单。但是,当我提交表单时,什么也没有发生。我希望表单的提交调用我的控制器的#create操作,但它甚至不调用create(我试图在#create中提出错误,但无法) 这是我的密码: game.rb class Game < ApplicationRecord has_many :players, dependent: :destroy has_many :rounds, depe

我试图建立一个表单来创建一个有四个不同玩家实例的游戏。我构建了一个嵌套表单,它将四组玩家字段呈现给游戏表单。但是,当我提交表单时,什么也没有发生。我希望表单的提交调用我的控制器的#create操作,但它甚至不调用create(我试图在#create中提出错误,但无法)

这是我的密码:

game.rb

class Game < ApplicationRecord
  has_many :players, dependent: :destroy
  has_many :rounds, dependent: :destroy

  accepts_nested_attributes_for :players
end
以下是我提交表格时的日志:

Started POST "/games" for ::1 at 2020-01-15 12:54:13 +0100
Processing by GamesController#create as JS
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"owiE4RViIsVonr9dwDAlLZR8MtZ/EnY/VTUq7o5zxHc2KcQ0Nliag9XnDHQZ7xKc5cIqOwQbuoPwSgkWPMknSA==", "game"=>{"players_attributes"=>{"0"=>{"name"=>"Bob"}, "1"=>{"name"=>"Joe"}, "2"=>{"name"=>"Alice"}, "3"=>{"name"=>"Fernand"}}}, "commit"=>"Submit"}
Completed 500 Internal Server Error in 7ms (ActiveRecord: 0.0ms)



RuntimeError ():

app/controllers/games_controller.rb:4:in `create'
这是我第一次问有关stackoverflow的问题,如果我不够清楚/需要提供更多信息,请告诉我


谢谢大家!

问题是
玩家属性

应该是

def family_params
  params.require(:game).permit(:date, players_attributes: [:name])
end

根据您的日志,您的表单以JS的形式提交。
只需将local设置为true即可禁用此功能:

views/games/new.rb
<%= form_with model: @game, local: true do |f| %>
views/games/new.rb

参考资料:

您能不能也显示一下您的路线代码?我刚刚添加了它谢谢。你可以在点击表单时发布日志吗?也添加了日志。我把它改成了这个,但我仍然有同样的问题
Rails.application.routes.draw do
  root to: 'pages#home'
  resources :games, only: [:create, :new]
end
Started POST "/games" for ::1 at 2020-01-15 12:54:13 +0100
Processing by GamesController#create as JS
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"owiE4RViIsVonr9dwDAlLZR8MtZ/EnY/VTUq7o5zxHc2KcQ0Nliag9XnDHQZ7xKc5cIqOwQbuoPwSgkWPMknSA==", "game"=>{"players_attributes"=>{"0"=>{"name"=>"Bob"}, "1"=>{"name"=>"Joe"}, "2"=>{"name"=>"Alice"}, "3"=>{"name"=>"Fernand"}}}, "commit"=>"Submit"}
Completed 500 Internal Server Error in 7ms (ActiveRecord: 0.0ms)



RuntimeError ():

app/controllers/games_controller.rb:4:in `create'
def family_params
  params.require(:game).permit(:date, players_attributes: [:name])
end
views/games/new.rb
<%= form_with model: @game, local: true do |f| %>