我遇到的问题是,当我在嵌套窗体中使用fields_for时,它会生成错误名称的字段。fields_for为协会生成错误的名称
简化模型是:
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
在视图(这是由的方式设计视图)
<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f| %>
<div class="inputs">
<% resource.build_owned_account %>
<%= f.fields_for resource.owned_account do |a| %>
<p>
<%= a.label :subdomain, "Account handle" %>
<%= a.text_field :subdomain %>
</p>
<% end %>
<p>
...
<% end %>
它产生的标记是:
<p>
<label for="user_account_subdomain">Account handle</label>
<input id="user_account_subdomain" name="user[account][subdomain]" size="30" type="text">
</p>
所以它正在生成用户[帐户] [子域]而不是用户[owned_account] [子域]。我尝试覆盖该字段的名称,但可能似乎得到这个工作。
任何帮助将不胜感激,在此先感谢。
谢谢你已经做到了!我想我之前有一些类似的东西,因为那时我并没有使用resource.build_owned_account,谢谢你的帮助。 – slarti42uk 2011-12-22 10:34:14