- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我在 Rails 项目中使用 Devise。我想将确认网址传递给第三方。该 url 由以下 Devise Mailer View 中的表达式 confirmation_url(@resource, confirmation_token: @token)
生成:
我已经 grep 了 Devise 的整个源代码,试图找出 confirmation_url
定义的人或位置,但我找不到任何东西;它只出现在 View 中,因此它必须由某些东西动态生成。
在常规 Rails 应用程序中,我可以使用 Rails.application.routes.url_helpers
生成 url(例如 Rails.application.routes.url_helpers.user_path(@user)
).
有没有类似的东西可以用来在邮件 View 之外调用 confirmation_url
?
最佳答案
好吧,在与它抗争了一段时间之后,我决定阅读该文件顶部附近的解释:
https://github.com/plataformatec/devise/blob/master/lib/devise/controllers/url_helpers.rb
事实证明,Devise 默认生成的(至少在我的应用程序中)是路由。 confirmation_url
是一个帮助程序,但您仍然可以看到 Devise 生成的路由:
rake routes | grep confirm
因为我使用的是一个名为 Account
的模型而不是 User
,所以我得到了这个:
account_confirmation POST /accounts/confirmation(.:format) accounts/confirmations#create
new_account_confirmation GET /accounts/confirmation/new(.:format) accounts/confirmations#new
GET /accounts/confirmation(.:format) accounts/confirmations#show
confirm_account PATCH /accounts/confirmation(.:format) accounts/confirmations#update
通过查看生成的电子邮件,我确认电子邮件看起来像这样:
http://myserver.com/accounts/confirm?confirmation_token=xxxx
这是上面 list 中的第三条路线——第二条 GET。由于我不知道的原因,rails 不会打印类似 show-like 的路线的名称,但您可以从顶部的 POST 中推断出来;该路由名为 account_confirmation
。所以现在我可以使用 rails url helper 自己生成 url:
Rails.application
.routes.url_helpers
.account_confirmation_url(confirmation_token: account.confirmation_token)
这将返回一个像上面那样的 url。请记住将 account
替换为 user
,或者您使用 Devise 进行身份验证的任何其他内容。
关于ruby-on-rails - 我如何在邮件程序之外使用 Devise 的 `confirmation_url`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28568579/
我在 Rails 应用程序中使用 Devise 和 omniauth 进行身份验证。 我已经按照自述文件并将以下行放在我的 production.rb 中: config.action_mailer.
我似乎已经为我的用户身份验证设置了 Devise,并设置了 :confirmable 选项。 当我在浏览器中运行它时,一切似乎都运行良好,我注册,转到我的 rails s 控制台中服务器日志中显示的确
我的网站完全是 SSL,所以我也希望由 devise (3.2.2) 生成的用于电子邮件验证的 url 为 https://.... 目前 url 由以下人员生成: confirmation_url(
我在 Rails 项目中使用 Devise。我想将确认网址传递给第三方。该 url 由以下 Devise Mailer View 中的表达式 confirmation_url(@resource, c
我是一名优秀的程序员,十分优秀!