Нет ошибки маршрута для помощника по редактированию, который использует токен в качестве: id (начиная с Ruby в руководстве по rails, третье издание) - PullRequest
0 голосов
/ 18 января 2020

Помощник по URL, который я использую, не работает, даже если он отображается на рейковых маршрутах. Не уверен, почему, надеюсь, кто-то может дать мне предложение или указать на ошибки. Что-то связанное с использованием токена в качестве идентификатора или конфигурации?

Нажав на это:

<%= link_to "Reset password", edit_password_reset_url(@member.reset_token, email: @member.email) %>

Дает это сообщение об ошибке (параметр электронной почты не проходит):

No route matches [GET] "/password_resets/$2a$12$Be6H4xiPjqlBtLxAozB7EujVy.2nZSLFJzL3LYDugvDmnn6aoGJ0G/edit"

Работа: new,: create path работает, но не: edit. route.rb (последняя строка):

  Rails.application.routes.draw do
  get 'sessions/new'
  root 'static_pages#home'
  get 'help' => 'static_pages#help'
  get 'about' => 'static_pages#about'
  get 'contact' => 'static_pages#contact'
  get 'signup' => 'members#new'
  get 'login' => 'sessions#new'
  post 'login' => 'sessions#create'
  delete 'logout' => 'sessions#destroy'
  resources :members
  resources :account_activations, only: [:edit]
  resources :password_resets, only: [:new, :create, :edit, :update]
  end

Rake routes image Это из учебника по третьему изданию Ruby по Rails Майкла Хартла (глава 10)

Спасибо, что уделили время на прочтение, и все ответы будут оценены.

1 Ответ

0 голосов
/ 18 января 2020

Проблема здесь в том, что -

Ваш edit_password_reset маршрут -

/password_resets/:id/edit 

, но при его вызове вы не передаете идентификатор, а вызываете его для участника token, как это -

<%= link_to "Reset password", edit_password_reset_url(@member.reset_token, email: @member.email) %>

Таким образом, чтобы вышеуказанный вызов работал, ваш edit маршрут должен быть примерно таким:

/password_resets/<token>/edit

Пути new и create работают, потому что они не Мне не нужен этот токен. Постарайтесь правильно следовать этому уроку, и вы поймете, где ошиблись.

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