Rails嵌套表单不呈现

时间:2015-08-14 06:35:54

标签: ruby-on-rails ruby rails-activerecord

我猜这是一个基本问题,而不是形式只是“不渲染”,但在这里它。我会尽量保持这个简短但可能需要相当多的背景。

我正在制作一个自定义的Rolodex应用程序,该组织给了我特定的内容。 对于这个特定的问题,我只处理联系电子邮件。理想情况下,我会有一个类似Google联系人的系统,您可以点击添加其他电子邮件字段,并有一个下拉列表来选择一个类别(主页,工作等。)。

在这种情况下,类别来自名为类别的表。这是我为整个项目(不仅仅是电子邮件)制作的实体关系图的链接:http://i.imgur.com/LNSWZHy.jpg

  

总结一下:如何在联系人创建/编辑过程中进行设置以允许输入电子邮件?

这是我的相关代码:

模型/ contact.rb

class Contact < ActiveRecord::Base
  has_many :emails

  accepts_nested_attributes_for :emails
end

模型/ email.rb

class Email < ActiveRecord::Base
  belongs_to :contact
  belongs_to :category
end

控制器/ contacts_controller.rb

# GET /contacts/new
  def new
    @contact = Contact.new
    @email = @contact.emails.build(params[:email])
  end

视图/联系人/ _form.html.erb

<%= form_for(@contact) do |f| %>

    #Other contact fields here

    <% f.fields_for @email do |email| %>
        <div class="field">
          <%= email.label :category_id %><br>
          <%= email.text_field :category_id %><br/>
        </div>
        <div class="field">
          <%= email.label :email %><br>
          <%= email.text_field :email %><br/>
        </div>
    <% end %>
    <div class="actions">
      <%= f.submit %>
    </div>
<% end %>

我也确认整个设置“手动”工作。我可以创建联系人和类别,然后通过手动输入外部ID来创建新电子邮件时正确引用它们。这里的问题是将这个过程压缩成一种形式。

任何意见都将不胜感激,谢谢!

1 个答案:

答案 0 :(得分:2)

变化:

 <% f.fields_for @email do |email| %>

 <%= f.fields_for @email do |email| %>