mywebsite.com/users/invitation/accept?invitation_token=J-azZ8fKtkuAyp2VZWQX
此网址来自invitation_instructions.HTML:
<p><%= link_to 'Accept invitation',accept_invitation_url(@resource,:invitation_token => @token) %></p>
现在我想将控制器中的邀请URL作为Json响应返回,如下所示:
def invite invitee = User.invite!({:email => email},current_user) accept_invitation_url = .... render :Json => accept_invitation_urlend
任何想法如何获得控制器中的accept_invitation_url?谢谢!
解决方法 尝试在控制器中包含url helpers模块: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) endend
可以在here on github找到Devise Invitable Gem的URL Helper模块
好的,默认情况下无法访问原始邀请令牌,因为它是没有访问者的实例变量(source),有两种方法可以解决这个问题.
丑陋的方式,无需修改模型类:
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 Modelclass User < ActiveRecord::Base attr_reader :raw_invitation_token # rest of the codeend# In your controllerdef 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模块已被删除,邀请作为正常路由处理,因此您可以删除包含DeviseInvitable :: Controllers :: UrlHelpers并将accept_invitation_url调用替换为:
Rails.application.routes.url_helpers.accept_invitation_url(被邀请者,:invitation_token => raw_token)
总结以上是内存溢出为你收集整理的ruby-on-rails – 设计邀请生成accept_invitation_url全部内容,希望文章能够帮你解决ruby-on-rails – 设计邀请生成accept_invitation_url所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)