尝试在单个表单上显示我的用户和配置文件模型时,我在尝试让 *fields_for* 产生输出时遇到了一些麻烦,这些使用 *has_one* 和 *belongs_to* 关系。
所以这里是模型类顶部的摘录:
class User < ActiveRecord::Base
has_one :profile
accepts_nested_attributes_for :profile
class Profile < ActiveRecord::Base
belongs_to :user
控制器非常简单和标准:
def new
@user = User.new
end
def edit
@user = User.find(params[:id])
end
这是当前视图中的一个片段:
<%= form_for(@user) do |f| %>
<% f.fields_for :profile do |profile_form| %>
<div class="field">
<%= profile_form.label :name %><br />
<%= profile_form.text_field :name %>
</div>
<% end %>
<div class="field">
<%= f.label :email %><br />
<%= f.text_field :email %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
我尝试过其他的东西,比如:
<% fields_for @user.profile do |profile_form| %>
如果我手动添加该字段,一切正常:
<div class="field">
<label for="user_name">Name</label><br>
<input id="user_name" name="user[profile_attributes][name]" size="30" type="text" value="<%= @user.profile.name %>">
</div>
值得一提的是,尽管我已经阅读了文档和指南,但我对 rails 还很陌生,并不确定这些功能是如何工作的。同样在我的搜索中,很多fields_for一个一对多关系的例子,所以也许我以错误的方式处理这个问题?
非常感谢所有帮助、建议和进一步阅读:-)
干杯,
山姆