gpt4 book ai didi

ruby-on-rails - Rails 4 嵌套形式 - 没有将符号隐式转换为整数

转载 作者:行者123 更新时间:2023-12-04 06:08:43 25 4
gpt4 key购买 nike

在我的 Rails 4 应用程序中,我有一个三重嵌套路由:

devise_for :users do
resources :foo do
resources :marflar
end
end

我有一个用于创建带有嵌入式 Marflar 对象的新 Foo 的表单:

<%= form_for(@foo) do |f| %>
<%= f.text_field :foo_attr %>

<%= f.fields_for :marflars_attributes do |marflars_form| %>
<%= marflars_form.text_field :marflar_attr %>
<% end %>
<%= f.submit %>
<% end %>

但是当我提交表单时,我得到:

TypeError in FoosController#create
no implicit conversion of Symbol into Integer

我的 Foo Controller 的相关部分如下所示:

def new
@foo = current_user.foos.build
@foo.marflars.build
end

def create
@foo = Foo.new(foo_params)

if @foo.save
redirect_to @foo
else
render action: 'new'
end
end

..
def foo_params
params.require(:foo).permit(:foo_attr, marflars_attributes: [:marflar_attr])
end

我的模型正如您所期望的那样:

class Foo < ActiveRecord::Base
belongs_to :user
has_many :marflars, dependent: :destroy
accepts_nested_attributes_for :marflars, allow_destroy: true
end

class Marflar < ActiveRecord::Base
belongs_to :foo
end

为什么这行不通?这让我发疯。我正在考虑切换到表单对象,但我想先让它工作。

最佳答案

你的 fields_for 调用应该只是

<%= f.fields_for :marflars do |marflars_form| %>
<%= marflars_form.text_field :marflar_attr %>
<% end %>

Rails 负责处理嵌套属性所期望的参数命名约定。

关于ruby-on-rails - Rails 4 嵌套形式 - 没有将符号隐式转换为整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17037803/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com