ruby-on-rails - 如何将自定义字段添加到 devise_invitable 邀请表单
问题描述
我需要在使用 devise_invitable 邀请用户时设置用户的角色。我已经阅读了关于如何完成此操作的答案以及文档,但我没有运气。除了一个之外,每一篇文章都过时了。
为什么视图中没有填充角色字段?仅显示电子邮件字段。我需要向我的 application_controller 添加一些东西吗?
路线.rb
Rails.application.routes.draw do
resources :assignments
resources :games
devise_for :users, :controllers => {registrations: 'registrations', invitations: 'users/invitations' }
root 'main#index'
end
邀请控制器.rb
class Users::InvitationsController < Devise::InvitationsController
before_action :configure_permitted_parameters
protected
# Permit the new params here.
def configure_permitted_parameters
devise_parameter_sanitizer.permit(:invite, keys: [:email, :role])
end
end
app/views/devise/invitations/new.html.erb
<h2><%= t "devise.invitations.new.header" %></h2>
<%= simple_form_for(resource, as: resource_name, url: invitation_path(resource_name), html: { method: :post }) do |f| %>
<%= f.error_notification %>
<% resource.class.invite_key_fields.each do |field| -%>
<div class="form-inputs">
<%= f.input field %>
</div>
<% end -%>
<div class="form-actions">
<%= f.button :submit, t("devise.invitations.new.submit_button") %>
</div>
<% end %>
解决方案
在 user.rb 中添加虚拟属性(attr_accessor: role) 然后你就可以使用它了
class User < ApplicationRecord
attr_accessor :role
end
推荐阅读
- ruby-on-rails - Vuex、webpacker 和多个包之间的共享状态
- python - 如何在数据框中的单个列上使用 Word Tokenize (Python)
- c# - NLog: logger.Error(string, Exception, param objects[] args) 函数没有记录我的异常
- c# - 调用 MakeRequest 方法时,我的 MVC 未显示正确的视图
- c - 将 time_t 设置为毫秒
- scala - 在 Scala 中命名元组变量
- java - 用于部分/全部模拟的 Mockito 间谍不起作用
- python - 使用贪婪方法实现斐波那契数列?
- apache - 如何在 Apache 2.4 中启用 Content-MD5 标签
- vectorization - 掩码 FP 乘法是否可以提高 AVX512 的性能?