【发布时间】:2013-11-22 14:08:31
【问题描述】:
我很难理解如何使用 fields_for 和嵌套属性。为了更好地理解它,我创建了一个repo,它不起作用。
我读了this,没有帮助。
我正在使用:
导轨 4.0.1 Ruby 2.0.0-p247
问题:
-
地址表格显示,为什么不能保存到数据库?
-
为什么不工作?
jack = Person.create(name: 'Jack')jack.address.create(street: '12w 33st')
主要功能如下:
#model
class Person < ActiveRecord::Base
has_one :address
accepts_nested_attributes_for :address
end
class Address < ActiveRecord::Base
belongs_to :person
end
如下图:
<%= form_for(@person) do |f| %>
<% if @person.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@person.errors.count, "error") %> prohibited this person from being saved:</h2>
<ul>
<% @person.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= f.label :name %><br>
<%= f.text_field :name %>
</div>
<div class="field">
<%= f.label :age %><br>
<%= f.text_field :age %>
</div>
<div class="field">
<%= f.label :gender %><br>
<%= f.text_field :gender %>
</div>
<%= fields_for :address do |address_fields|%>
Street:
<%= address_fields.text_field :street%>
Zip code:
<%= address_fields.text_field :zip_code%>
<% end %>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
结论:
- has_one 关系不支持
person.address.create。这仅适用于 has_many -
fields_for的rails api,真的不清楚。它只是缺少整个控制器部分。跟随它不会成功。
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-4