如何将参数传递给我的 devise_invitable 控制器?

How do I pass params to my devise_invitable controller?

我创建了一个非常普通的邀请控制器:

class InvitationsController < Devise::InvitationsController
  def new
    binding.pry
  end
end

然后我创建了一个 link 来触发该请求,如下所示:

<%= link_to "Invite #{@profile.name}", new_user_invitation_path(email: @profile.email), class: "btn btn-xs btn-primary" %>

我遇到的问题是,当我在那个动作中被撬开时,它没有向我显示 email 参数。

> params
=> <ActionController::Parameters {"controller"=>"invitations", "action"=>"new"} permitted: false>

如何使用 InvitationsControler#New 操作发送参数?

原来new_user_invitation_path对应一个GET请求一个新的邀请对象,生成一个新的表单

解决方案是在另一个控制器中创建另一个动作,然后简单地用 method: :post 调用它,如下所示:

<%= link_to "Invite #{@profile.name}", invite_path(@profile), method: :post, data: { confirm: "Are you SURE you are ready to invite #{@profile.name}?"}, class: "btn btn-xs btn-primary" %>

这很有魅力。