Ruby on rails 用于为关联生成错误名称的字段\u

Ruby on rails 用于为关联生成错误名称的字段\u,ruby-on-rails,devise,Ruby On Rails,Devise,我遇到的问题是,当我以嵌套形式使用字段\u时,它会生成名称错误的字段 简化模型包括: class User < ActiveRecord::Base has_one :owned_account, :class_name => "Account", :foreign_key => "user_id" accepts_nested_attributes_for :owned_account attr_accessible :email, ... :owned_acco

我遇到的问题是,当我以嵌套形式使用字段\u时,它会生成名称错误的字段

简化模型包括:

class User < ActiveRecord::Base
  has_one :owned_account, :class_name => "Account", :foreign_key => "user_id"
  accepts_nested_attributes_for :owned_account
  attr_accessible :email, ... :owned_account, :owned_account_attributes
end

class Account < ActiveRecord::Base
  belongs_to :owner, :class_name => 'User', :foreign_key => 'user_id'
  attr_accessible :subdomain
end
class用户“account”,:foreign\u key=>“user\u id”
接受:拥有的\u帐户的\u嵌套\u属性\u
可访问属性:电子邮件,…:拥有的帐户,:拥有的帐户属性
结束
类帐户'User',:foreign\u key=>'User\u id'
属性可访问:子域
结束
在视图中(顺便说一下,这是一个设计视图)

resource_name,:url=>registration_path(resource_name))do | f |%>

...
它生成的标记是:

  <p>
  <label for="user_account_subdomain">Account handle</label>
  <input id="user_account_subdomain" name="user[account][subdomain]" size="30" type="text">
  </p>

账户处理

因此,它正在生成用户[帐户][子域],而不是用户[拥有的帐户][子域]。我试图覆盖字段的名称,但似乎可以让它工作


任何帮助都将不胜感激,请提前感谢。

IIRC rails根据模型名称而不是关联名称生成名称

你有没有试过这样的方法:

<%= f.fields_for :owned_account, resource.owned_account do |a| %>

IIRC rails根据模型名称而不是关联名称生成名称

你有没有试过这样的方法:

<%= f.fields_for :owned_account, resource.owned_account do |a| %>

为了触发嵌套属性magicness,您需要执行以下操作

f.fields_for :owned_account do |account_fields|

如果您给出了帐户的实际实例,rails不知道它是与
拥有的\u帐户关联相关的实例,以便触发您需要执行的嵌套属性magicness

f.fields_for :owned_account do |account_fields|

如果您给出了一个实际的帐户实例,rails不知道它是与
owned\u帐户
关联相关的实例

谢谢您这么做!我想在我加入resource.build_拥有的_帐户之前,我有过类似的经历,所以当时它不起作用。谢谢你的帮助。谢谢你的帮助!我想在我加入resource.build_拥有的_帐户之前,我有过类似的经历,所以当时它不起作用。谢谢你的帮助。