如何将自定义字段添加到 Devise-invitable

问题描述 投票:0回答:1
我已经用

rails generate devise_invitable:views

 生成了视图
我还编辑了 users/invitations/new.html.erb 中生成的视图,以包含我想要包含名字和姓氏的字段

<%= form_for(resource, as: resource_name, url: invitation_path(resource_name), html: { method: :post }) do |f| %> <%= render "users/shared/error_messages", resource: resource %> <% resource.class.invite_key_fields.each do |field| -%> <div class="field"> <%= f.label field %><br /> <%= f.text_field field %> </div> <div class="field"> <%= f.label field %><br /> <%= f.text_field :fist_name %> </div> <div class="field"> <%= f.label field %><br /> <%= f.text_field :last_name %> </div> <% end -%> <div class="actions"> <%= f.submit t("devise.invitations.new.submit_button") %> </div> <% end %>
我已将这行代码

# devise_for :users, controllers: { invitations: 'users/invitations' }

添加到
routes.rb
文件中

我还创建了一个控制器来继承 Devise 控制器

def update if some_condition redirect_to root_path else super end end def create end def new end end
但是,当我去 

new_user_invitation_path

 发出邀请时,我只收到电子邮件字段。请问如何制作自定义字段?

ruby-on-rails devise devise-invitable
1个回答
0
投票
我看到的是,您正在尝试将自定义字段(名字和姓氏)添加到 Devise Inevitable gem 的邀请表单中。根据您提供的代码,您可以检查一些事项,以确保自定义字段在邀请表单中正确显示。

  1. 表单字段:在您的视图 (users/invitations/new.html.erb

    ) 中,您尝试在迭代 
    resource.class.invite_key_fields
     的循环内呈现名字和姓氏字段。但是,这些字段应该位于循环之外,并且应该作为普通格式字段添加。

    <%= form_for(resource, as: resource_name, url: invitation_path(resource_name), html: { method: :post }) do |f| %> <%= render "users/shared/error_messages", resource: resource %> <% resource.class.invite_key_fields.each do |field| -%> <div class="field"> <%= f.label field %><br /> <%= f.text_field field %> </div> <% end -%> <div class="field"> <%= f.label :first_name %><br /> <%= f.text_field :first_name %> </div> <div class="field"> <%= f.label :last_name %><br /> <%= f.text_field :last_name %> </div> <div class="actions"> <%= f.submit t("devise.invitations.new.submit_button") %> </div> <% end %>
    
    
  2. 控制器继承:看起来您已经创建了一个自定义控制器来继承 Devise 控制器 (users/invitations_controller.rb

    )。确保您已正确配置路由以使用此自定义控制器。

    devise_for :users, controllers: { invitations: 'users/invitations' }
    仔细检查您是否使用了正确的控制器名称 (

    Users::InvitationsController

    ),并且您是否已在控制器中正确定义了 
    new
    create
    update
     操作。

  3. 自定义操作:您似乎已在自定义控制器中定义了 create

    new
    update
     操作,但实际上并未向这些操作添加任何逻辑。您应该添加必要的逻辑来处理邀请创建和更新过程。例如:

    class Users::InvitationsController < Devise::InvitationsController def create # Your logic to create the invitation end def new # Your logic to prepare data for the new invitation form end def update # Your logic to update the invitation end end
    确保根据应用程序的要求实现这些操作所需的逻辑。

  4. 设计视图:检查是否已使用 rails generate devise_invitable:views

     命令生成并自定义设计视图。您的自定义应该反映在 
    users/invitations/new.html.erb
     文件中。

进行这些调整后,请确保重新启动 Rails 服务器以查看更改生效。如果您仍然遇到问题,请考虑检查服务器日志中是否有任何错误消息,这些消息可能会帮助您了解问题所在。

© www.soinside.com 2019 - 2024. All rights reserved.