添加用户:名称以设计可邀请的 edit.html.erb 表单

Len*_*rio 3 ruby-on-rails devise ruby-on-rails-4

我正在尝试将 :name 输入字段添加到 edit.html.erb 表单中,用户在接受设计邀请后将定向到该表单。

但是,填写表格后,:名称输入字段为空(未存储在数据库中)。

发生这种情况是因为 Rails 4 使用了强参数吗?

我已经尝试解决这个问题有一段时间了,但似乎无济于事。

在此先感谢您的帮助!

小智 5

devise_invitable 的 github 存储库上有一个关于此内容的 wiki 页面

在那篇文章中,他们

  1. 子类Devise::InvitationsController
  2. 覆盖update
  3. 输入 abefore_action来更改已清理的参数:accept_invitation

但是,我想知道是否可以(并且更简单)将以下内容放入您的ApplicationController

class ApplicationController < ActionController::Base
  #...
  before_action :devise_configure_permitted_parameters, if: :devise_controller?
  #...
  protected
  def devise_configure_permitted_parameters
    # Devise 3 (deprecated in Devise 4.0 and removed in Devise 4.2)
    # devise_parameter_sanitizer.for(:accept_invitation) << :name
    # Devise 4
    devise_parameter_sanitizer.permit(:accept_invitation, keys: [:name])
  end
Run Code Online (Sandbox Code Playgroud)

我已经为设备:sign_up:account_update操作做到了这一点,并且它在没有覆盖它们的控制器的情况下工作了。