コントローラーに url ヘルパー モジュールを含めてみてください。
class MyController < ApplicationController
include DeviseInvitable::Controllers::UrlHelpers
def invite
invitee = User.invite!({:email => email}, current_user)
render :json => accept_invitation_url(invitee, :invitation_token => invitee.token)
end
end
Devise Invitable Gem の URL ヘルパー モジュールは、githubで見つけることができます。
未加工の招待トークンはアクセサー ( source ) のないインスタンス変数であるため、デフォルトではアクセスできません。これを解決するには 2 つの方法があります。
モデルクラスを変更せずに醜い方法:
def invite
invitee = User.invite!({:email => email}, current_user)
raw_token = invitee.instance_variable_get(:@raw_invitation_token)
render :json => accept_invitation_url(invitee, :invitation_token => raw_token)
end
ユーザーモデルクラスに属性リーダーを追加することによるクリーンな方法:
# User Model
class User < ActiveRecord::Base
attr_reader :raw_invitation_token
# rest of the code
end
# In your controller
def invite
invitee = User.invite!({:email => email}, current_user)
raw_token = invitee.raw_invitation_token
render :json => accept_invitation_url(invitee, :invitation_token => raw_token)
end
更新 (2015 年 10 月 16 日):
UrlHelper モジュールが削除され、招待が通常のルートとして処理されるように見えるため、呼び出しを削除して次のようinclude DeviseInvitable::Controllers::UrlHelpers
に置き換えることができます。accept_invitation_url
Rails.application.routes.url_helpers.accept_invitation_url(invitee, :invitation_token => raw_token)