You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Devise-invitable添加自定义字段?已操作但仅显示邮箱字段

解决Devise Invitable添加自定义字段的问题

1. 修复视图文件错误

你的users/invitations/new.html.erb存在三处关键问题:

  • 自定义字段嵌套在resource.class.invite_key_fields.each循环内,该循环默认仅遍历email字段,导致字段重复渲染且标签错误
  • :fist_name拼写错误,应为:first_name
  • 自定义字段的label错误使用循环变量field(对应email),需替换为各自的字段名

修改后的视图代码:

<%= 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 -%>

  <%# 添加自定义的first_name和last_name字段 %>
  <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. 启用自定义控制器

取消routes.rb中注释的代码,让Devise使用你自定义的邀请控制器:

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

3. 完善自定义控制器的参数处理

你的Users::InvitationsController中create方法为空,需添加参数允许逻辑,确保自定义字段能被正确接收:

class Users::InvitationsController < Devise::InvitationsController
  def update
    if some_condition
      redirect_to root_path
    else
      super
    end
  end

  def create
    build_resource(invite_params)
    resource.save
    respond_with resource, location: after_invite_path_for(resource)
  end

  def new
    super
  end

  private

  def invite_params
    params.require(:user).permit(:email, :first_name, :last_name)
  end
end

4. 配置User模型支持邀请字段

在app/models/user.rb中,配置Devise Invitable允许传递自定义字段:

class User < ApplicationRecord
  # 其他devise模块...
  devise :invitable, invite_fields: [:first_name, :last_name]
end

完成以上步骤后重启服务器,访问new_user_invitation_path即可看到包含邮箱、first_name和last_name的完整表单。

内容的提问来源于stack exchange,提问作者morris menanya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 08:31:56