Как "/ api" добавляется к "localhost: 3000" при разрешении URL в Rails 5? - PullRequest
0 голосов
/ 21 апреля 2019

Я пытаюсь реализовать функциональность «Забыли пароль», используя «devise_token_auth» в Rails 5 api, в котором я выполнил следующие шаги:

  1. Нажмите "localhost: 3000 / auth / password", указав адрес электронной почты зарегистрированного пользователя, redirect_url в качестве параметров. Я тоже получил письмо.

  2. При нажатии на ссылку «изменить мой пароль» в письме он перенаправляет на «localhost: 3000 / api / auth / password / edit / ...» вместо «localhost: 3000 / auth / password /» редактировать /..."

Мой reset_password_instructions.html.erb выглядит следующим образом:

<p><%= t(:hello).capitalize %> <%= @resource.email %>!</p>

<p><%= t '.request_reset_link_msg' %></p>

<p><%= link_to t('.password_change_link'), edit_password_url(@resource, reset_password_token: @token, config: message['client-config'].to_s, redirect_url: message['redirect-url'].to_s).html_safe %></p>

<p><%= t '.ignore_mail_msg' %></p>
<p><%= t '.no_changes_msg' %></p>

Я не могу понять, как «edit_password_url» преобразуется в «localhost: 3000 / api / auth / password / edit / ...» вместо «localhost: 3000 / auth / password / edit / ...» , Может ли кто-нибудь помочь мне здесь?

Примечание: в development.rb у меня есть config.action_controller.default_url_options = { host: 'localhost:3000' }

UPDATE:

routes.rb

Rails.application.routes.draw do
  #.....
  resources :employee_contact_infos
  resources :employee_work_infos

  mount_devise_token_auth_for 'User', at: 'auth'

  # get '/api' => redirect('/swagger/dist/index.html?url=/apidocs/api-docs.json')
  # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html

  get '/industry_sectors' => 'drop_down_values#industry_sector_list'
  get '/currencies' => 'drop_down_values#currency'

  #...

  namespace :employees do

  end


end

вывод рейковых маршрутов для devise_token_auth:

                new_user_session GET    /auth/sign_in(.:format)                                                                  devise_token_auth/sessions#new
                    user_session POST   /auth/sign_in(.:format)                                                                  devise_token_auth/sessions#create
            destroy_user_session DELETE /auth/sign_out(.:format)                                                                 devise_token_auth/sessions#destroy
               new_user_password GET    /auth/password/new(.:format)                                                             devise_token_auth/passwords#new
              edit_user_password GET    /auth/password/edit(.:format)                                                            devise_token_auth/passwords#edit
                   user_password PATCH  /auth/password(.:format)                                                                 devise_token_auth/passwords#update
                                 PUT    /auth/password(.:format)                                                                 devise_token_auth/passwords#update
                                 POST   /auth/password(.:format)                                                                 devise_token_auth/passwords#create
        cancel_user_registration GET    /auth/cancel(.:format)                                                                   devise_token_auth/registrations#cancel
           new_user_registration GET    /auth/sign_up(.:format)                                                                  devise_token_auth/registrations#new
          edit_user_registration GET    /auth/edit(.:format)                                                                     devise_token_auth/registrations#edit
               user_registration PATCH  /auth(.:format)                                                                          devise_token_auth/registrations#update
                                 PUT    /auth(.:format)                                                                          devise_token_auth/registrations#update
                                 DELETE /auth(.:format)                                                                          devise_token_auth/registrations#destroy
                                 POST   /auth(.:format)                                                                          devise_token_auth/registrations#create
             auth_validate_token GET    /auth/validate_token(.:format)                                                           devise_token_auth/token_validations#validate_token

Swagger_docs.rb

class Swagger::Docs::Config
  def self.base_api_controller; ApplicationController end
  def self.transform_path(path, api_version)
    # Make a distinction between the APIs and API documentation paths.
    "#{path}"
  end

  Swagger::Docs::Config.register_apis({
                                          '1.0' => {
                                              controller_base_path: '',
                                              api_file_path: 'public/apidocs',
                                              base_path: 'http://localhost:3000',
                                              clean_directory: true
                                          }


                        })

конец

1 Ответ

1 голос
/ 22 апреля 2019

Сгенерированная ссылка будет изменена, если была установлена ​​какая-либо конфигурация для относительного корня URL. Можете ли вы проверить, если вы определили в любой конфигурации, чтобы установить относительный корень URL, как показано ниже:

config.relative_url_root = "/api"

Предположим, вы хотите развернуть свое приложение в "/ app1". Rails должен знать этот каталог для генерации соответствующих маршрутов.

config.relative_url_root = "/app1"

в качестве альтернативы вы можете установить переменную среды RAILS_RELATIVE_URL_ROOT.

Rails теперь будет добавлять "/ app1" при генерации ссылок

Чек - https://guides.rubyonrails.org/configuring.html#deploy-to-a-subdirectory-relative-url-root

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...