rails 4形式,多个模型没有显示嵌套字段

时间:2014-04-10 18:30:25

标签: ruby-on-rails devise nested-forms

用户模型 - 使用设计构建。

class User < ActiveRecord::Base
// some stuff 
has_one :expert
accepts_nested_attributes_for :expert, :update_only => true
// more stuff

专家模型 - 使用无需设计构建。

class Expert < ActiveRecord::Base  
belongs_to :user

用户控制器:

def edit
  @user = User.friendly.find(params[:id])
  @title = "Edit Profile"
end

专家控制员:

def edit
  @expert = Expert.find(params[:id])
  @title = "Edit Expert Profile"
end

编辑用户视图表单部分:

<%= form_for(@user) do |f| %>
  <% if @user.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(@user.errors.count, "error") %> prohibited this user from being saved:</h2>

      <ul>
      <% @user.errors.full_messages.each do |msg| %>
        <li><%= msg %></li>
      <% end %>
      </ul>
    </div>
  <% end %>

  <div class="field">
    <%= f.label :Name %><br>
    <%= f.text_field :name, :class => "form-control" %>
  </div>


  <div class="field">
    <%= f.label :Email %><br>
    <%= f.text_field :email, :class => "form-control" %>
  </div>

  <div class="field">
    <%= f.label :Phone %><br>
    <%= f.text_field :phone, :class => "form-control" %>
  </div>


  <div class="field">
    <%= f.label :Password %><br>
    <%= f.text_field :password, :class => "form-control" %>
  </div>

  <div class="field">
    <% f.fields_for :expert do |e| %>
      <%= e.label :Location %><br />
      <%= e.text_field :Location %>
    <% end %>
  </div>

  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>

应该显示专家模型的位置字段的表单部分不会显示在视图上。此处截图:http://i.imgur.com/JifVuv7.png

无法弄清楚为什么会这样,任何帮助都会受到赞赏!

1 个答案:

答案 0 :(得分:0)

根据ERB语法,您需要使用:

<%= %>执行附带的ruby代码+渲染结果  <% %>执行随附的ruby代码

您使用<% %>作为f.fields_for,这就是未呈现嵌套字段的原因。

更改代码如下:

<%= f.fields_for :expert do |e| %>
  <%= e.label :Location %><br />
  <%= e.text_field :Location %>
<% end %>