Ruby on rails 用于返回nil的Rails字段
我想我在写的过程中解决了这个问题。我将在下面发布我的解决方案 tl;dr Rails字段\u用于不生成预期参数 我有一个用户类,其代码如下:Ruby on rails 用于返回nil的Rails字段,ruby-on-rails,ruby-on-rails-4,fields-for,Ruby On Rails,Ruby On Rails 4,Fields For,我想我在写的过程中解决了这个问题。我将在下面发布我的解决方案 tl;dr Rails字段\u用于不生成预期参数 我有一个用户类,其代码如下: class User < ActiveRecord::Base has_one :woojit, dependent: :destroy, validate: true accepts_nested_attributes_for :woojit # ... more end 但我在create操作中实际得到的是一个带有以下子集的par
class User < ActiveRecord::Base
has_one :woojit, dependent: :destroy, validate: true
accepts_nested_attributes_for :woojit
# ... more
end
但我在create操作中实际得到的是一个带有以下子集的params散列:
{
"user" => {
"woojit_attributes" => {
"attr_1"=>"Foo", # etc
}
}
}
{
"user" => {
"woojit" => {
"attr_1"=>"Foo", # etc
}
}
}
即“woojit”而不是“woojit_属性”。我可以在create操作中解决这个问题,但这似乎是解决问题的可怕方式。我想知道为什么钥匙一开始就命名错误
我最初尝试使用行
(ie符号而不是实例变量),而不是在#新操作中构建Woojit对象
在“一对一”部分中,建议这样做,但块中的代码从未执行过,因此该行返回了
nil
——并且woojit参数从未以任何形式出现在create操作中 因此,问题显然在于,当给定一个模型实例(@woojit
)而不是一个符号(:woojit
)时,“字段”的行为不同
在前一个实例中,它生成引用(模型名称)的字段,例如:
在后一个实例中,它生成引用模型属性的字段,例如:
<input type="text" name="user[woojit_attributes][woojit_attr]" id="user_pledge_attributes_pledgor_name" />
希望这能帮别人省去一些我刚刚经历的挫折
{
"user" => {
"woojit_attributes" => {
"attr_1"=>"Foo", # etc
}
}
}
{
"user" => {
"woojit" => {
"attr_1"=>"Foo", # etc
}
}
}
<input type="text" name="user[woojit][woojit_attr]" id="user_pledge_pledgor_name" />
<input type="text" name="user[woojit_attributes][woojit_attr]" id="user_pledge_attributes_pledgor_name" />