将多个电子邮件添加到用户模型

时间:2011-08-26 13:11:22

标签: ruby-on-rails-3 devise

我想在使用设计时使用has_many关系向用户模型添加多个电子邮件。这是这个问题的一个扩展:How can I configure Devise for Ruby on Rails to store the emails and passwords somewhere other than in the user model?

User.rb has_many:电子邮件

Email.rb belongs_to:user

在我的新/编辑表单中,如何设置fields_for xxx.email。我可以看到来自devise的注册页面使用“资源”。当我尝试以下代码时,它只是跳过电子邮件字段。

= form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f| 
  = devise_error_messages! 
  %table{:style=>"width:400px;"}
    -fields_for resource.email do |emails|
      %tr 
        %td
          = emails.label :email
        %td
          = emails.email_field :email
  %tr
    %td
      = f.label :password ...
  %tr
    %td
      = f.label :firstname ....

另外,你是谁修改控制器中的动作设计?

在这种情况下,整个电子邮件块都不会出现。

由于

1 个答案:

答案 0 :(得分:0)

帮助器fields_for需要一些数据来创建字段。对于新记录,通常需要执行resource.emails.build之类的操作来创建要显示的第一条记录。

而且,我认为你应该使用fields_for(resource.emails) do |email|