我正在使用devise_invitable来允许用户邀请。
以下是我在用户模型中的内容:
attr_accessor :custom_message
我创建了一个名为invitations_controller.rb的新控制器,这里面是我的内容:
class InvitationsController < Devise::InvitationsController
def create
User.invite!({email: email}, current_user) do |user|
user.message = params[:custom_message]
end
end
以下是我的新邀请表中的内容:
<%= t "devise.invitations.new.header" %>
<%= simple_form_for resource, :as => resource_name, :url => invitation_path(resource_name), :html => {:method => :post} do |f| %>
<% resource.class.invite_key_fields.each do |field| -%>
<%= f.input field %>
<% end -%>
<%= f.input :custom_message %>
<%= f.submit t("devise.invitations.new.submit_button") %>
<% end %>
这就是我在邀请邮件中的内容:
<%= @resource.email %>
<%= @resource.custom_message %>
<%= link_to 'Accept this invitation', accept_invitation_url(@resource, :invitation_token => @token) %>
当我输入电子邮件地址和自定义消息并单击发送时,这就是我在日志中看到的内容:
Started POST "/users/invitation" for 127.0.0.1 at 2014-04-15 15:30:18 -0400
Processing by Devise::InvitationsController#create as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"x4Mb6AkF1GnZ5bHlipBbLh/X/T0zcHkkkxrtkHW7Y0U=",
"user"=>{"email"=>"email@gmail.com", "custom_message"=>"Test message"}, "commit"=>"Send an invitation"}
电子邮件发送成功,我看到没有错误,但没有显示自定义消息应该是,自定义消息在收到的电子邮件中是空白的。是什么造成的?我该如何解决?
编辑:我在custom_message上收到一个未经许可的参数错误
这就是我在应用程序控制器中的内容:
before_filter :configure_permitted_parameters, if: :devise_controller?
protected
def configure_permitted_parameters
devise_parameter_sanitizer.for(:accept_invitation) do |u| u.permit(:username,:validate_username, :password,:password_confirmation, :invitation_token)
devise_parameter_sanitizer.for(:accept_invitation).concat [:custom_message]
end
end
答案 0 :(得分:2)
这可能会起作用。
User.invite!({email: email, message: params[:user][:custom_message] }, current_user)
如果您收到Un permitted
错误,则应该执行application
或User
控制器中的操作。
before_filter :configure_permitted_parameters, if: :devise_controller?
def configure_permitted_parameters
devise_parameter_sanitizer.for(:invite).concat [:custom_message]
end
您还必须编辑邀请邮件,因为您使用的custom_message
属性没有任何价值。您应该使用message
,因为您要将数据分配到其中。所以
<%= @resource.custom_message %>
更改为
<%= @resource.message %>
答案 1 :(得分:1)
仔细查看您的日志,它有答案。您的参数值位于
params[:user][:custom_message]
不
params[:custom_message]