gpt4 book ai didi

ruby-on-rails - 在 Rails 范围内使用 devise_for 设计生成的邮件程序 URL

转载 作者:行者123 更新时间:2023-12-04 18:32:24 25 4
gpt4 key购买 nike

我正在使用 Javascript 框架构建 Rails 应用程序,因此 Rails 正在为后端 API 提供服务。

目前,该应用只是实现所有设计 View 和操作。

为此,Rails 应用仅接受对其 /api/ URL 的 JSON 调用,并要求 Devise 仅处理 JSON 调用,因此我将它们定义如下:

Rails.application.routes.draw do
scope :api, module: :api, constraints: { format: 'json' } do
devise_for :users, controllers: {
confirmations: 'devise/confirmations',
registrations: 'devise/registrations',
sessions: 'sessions'
}

resources :users
end

# For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
root to: 'home#index'
get '*path', to: 'home#index'
end

解释这里发生了什么:

  • 第一部分是定义 API URL,包括设计的 URL 和定义 API 资源(目前只有 :users)
  • 然后定义root路由
  • 最后将任何调用转发到 Javascript 路由器(允许管理页面重新加载或外部链接,如电子邮件链接)。

除帐户确认电子邮件链接外,一切正常。发送的确认电子邮件有一个包含 /api/ ( http://localhost:3001/api/users/confirmation?confirmation_token=XLDVqqMZwXg6dszyV_nc ) 的链接,但应该没有(预期 URL:http://localhost:3001/users/confirmation?confirmation_token=XLDVqqMZwXg6dszyV_nc )。

我怎样才能设计出没有 /api/ 部分的确认邮件(以及所有其他邮件)?

更新

深入查看设计源代码,我发现 the confirmation mailer view template正在使用 confirmation_url Rails 命名路由,这是正确的。

在我的例子中,我需要将所有设计路由限制为 /api/ 路由,并限制为 JSON 格式,除了少数路由被定义 2 次:第一次HTML 格式的 /api/ 范围(将转发到我的 JavaScript 应用程序),以及 /api/ 范围内的第二个路由,将由 JavaScript 调用应用程序。

示例:预期的账户创建确认执行堆栈

  1. Rails 收到请求到 /users/confirmation?confirmation_token=XLDVqqMZwXg6dszyV_nc
  2. Rails 将请求转发给 Javascript 路由器
  3. Javascript框架加载相应的页面
  4. Javascript 页面加载将调用 /api/users/confirmation?confirmation_token=XLDVqqMZwXg6dszyV_nc 设计路径以确认帐户的服务

最佳答案

您应该能够在初始 API 路由之后简单地添加两条额外的路由。像这样:

Rails.application.routes.draw do
scope :api, module: :api, constraints: { format: 'json' } do
devise_for :users, controllers: {
confirmations: 'devise/confirmations',
registrations: 'devise/registrations',
sessions: 'sessions'
}

resources :users
end

devise_for :users, controllers: {
confirmations: 'devise/confirmations',
registrations: 'devise/registrations'
}

root to: 'home#index'
get '*path', to: 'home#index'
end

在没有看到前端代码的情况下很难确定,但是两条路线都有。

关于ruby-on-rails - 在 Rails 范围内使用 devise_for 设计生成的邮件程序 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50226896/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com