我猜这是一个基本问题,而不是形式只是“不渲染”,但在这里它。我会尽量保持这个简短但可能需要相当多的背景。
我正在制作一个自定义的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来创建新电子邮件时正确引用它们。这里的问题是将这个过程压缩成一种形式。
任何意见都将不胜感激,谢谢!
答案 0 :(得分:2)
变化:
<% f.fields_for @email do |email| %>
到
<%= f.fields_for @email do |email| %>