我正在尝试将邀请函添加到我的新应用程序中。我在互联网上发现了很多信息,但似乎没有解决办法。
所以我面临的问题如下:
当用户邀请某人时,将创建该帐户,而由devise生成的标准电子邮件模板会显示“将不会创建您的帐户...”
当用户单击激活链接时,他将重定向到编辑页面,但是当他们提交信息时,不会保存我的列:全名,:terms_of_service。
可能我丢失了一些东西。
这是我的Invitations_controller
class InvitationsController < Devise::InvitationsController
def new
super
end
def create
User.invite!(invite_params, current_user)
redirect_to dashboard_path
end
def update
user = User.accept_invitation!(accept_invitation_params)
end
def edit
end
private
def invite_params
params.require(:user).permit(:email, :ivitation_token, :provider, :skip_invitation)
end
def accept_invitation_params
params.permit(:password, :password_confirmation, :invitation_token, :fullname, :terms_of_service)
end
end
我的控制台输出:
Processing by InvitationsController#update as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"/PoYvD7be0xpE1yBGI2EsojBU62o8d+Kcx0B8LgZ7DJkrqz2lCGs1YrA8d5ziwOAVH68u+1ij7ZacecVmNfaUQ==", "user"=>{"invitation_token"=>"4a24a37282a3881a4d595f251ea4deca4d0c25cbb966d50d8d622941a55c1a4c", "fullname"=>"Arnas Klasauskas", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]", "terms_of_service"=>"1"}, "commit"=>"Einladen"}
Unpermitted parameters: :utf8, :_method, :authenticity_token, :user, :commit
No template found for InvitationsController#update, rendering head :no_content
我的application_controller
before_action :configure_permitted_parameters, if: :devise_controller?
def configure_permitted_parameters
devise_parameter_sanitizer.permit(:accept_invitation, keys: [:email, :fullname, :terms_of_service])
end
答案 0 :(得分:1)
因此,如果要添加自定义参数,只需将这一行添加到更新方法中
User.accept_invitation!(update_resource_params)
现在,您需要使用自定义字段将update_resource_params方法添加到Invitations_controller中:
def update_resource_params
params.require(:user).permit(:password, :password_confirmation, :invitation_token, :fullname, :terms_of_service)
end
答案 1 :(得分:0)
在创建邀请时调用。
def invite_resource
User.invite!(invite_params)
end
接受邀请时调用。
def accept_resource
resource = resource_class.accept_invitation!(update_resource_params)
resource
end
这是您自定义字段的地方
def invite_params
params.require(:user).permit(:email, :invitation_token,...)
end
def configure_permitted_parameters
devise_parameter_sanitizer.permit(:accept_invitation, keys: [:name, :time_zone, :terms_of_service,...])
end