我使用Ruby v 3.我想将2个表中的数据显示为一个表单。 我的模特:
class Address < ActiveRecord::Base
attr_accessible :city, :number, :street
validates :city, :presence => true
validates :number, :presence => true
validates :street, :presence => true
has_many :users
end
class User < ActiveRecord::Base
belongs_to :address
attr_accessible :name, :phone, :surname, :address_attributes
accepts_nested_attributes_for :address
end
我的表格看起来很相似:
<%= form_for(@user) do |f| %>
<div class="field">
<%= f.label :name %><br />
<%= f.text_field :name %>
</div>
<div class="field">
<%= f.label :surname %><br />
<%= f.text_field :surname %>
</div>
<div class="field">
<%= f.label :phone %><br />
<%= f.text_field :phone %>
</div>
<%= f.fields_for :address_attributes do |p| %>
<div class="field">
<%= p.label :city %><br />
<%= p.text_field :city %>
</div>
<div class="field">
<%= p.label :street %><br />
<%= p.text_field :street %>
</div>
<div class="field">
<%= p.label :number %><br />
<%= p.text_field :number %>
</div>
<% end %>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
如您所见,我使用fields_for方法。我的控制器在这里:
def edit
@user = User.find(params[:id])
@user.address_attributes = @user.address
end
它不起作用,我完全不知道为什么。当我点击地址列表上的编辑时,我遇到了错误:
undefined method `with_indifferent_access'
任何人都可以帮我解决这个问题吗?
答案 0 :(得分:2)
在RailsCasts上查看第196和197集:
有196的修订剧集,您需要订阅RailsCasts。
我强烈建议订阅像RailsCasts和CodeSchool这样的学习网站,以正确的方式更快地学习RoR 和。
答案 1 :(得分:0)
尝试:
def edit
@user = User.find(parmas[:id])
end
并在您的观点上:
<%= f.fields_for :address do |p| %>
并查看它是否有效,您不必添加属性