Не удалось найти действие для контроллера. Но это присутствует - PullRequest
1 голос
/ 30 октября 2019

У меня есть sessions_controller.rb

class SessionsController < ApplicationController
  skip_before_filter :login_joomla_user_or_redirect

  def create
    session[:joomla_user_id] = params[:joomla_user_id]
    redirect_to root_path
  end

  def destroy
    session[:joomla_user_id] = nil
    redirect_to root_path
  end

end

И базовый маршрут

unless Rails.env.production?
   get "login_as/:joomla_user_id" => "sessions#create", :as => :login
   get "logout"                   => "sessions#destroy"
end

Я не могу понять, почему, когда я пытаюсь войти по маршруту, браузер возвращает мне:

The action 'create' could not be found for SessionsController

Действие есть. Почему? Я перенес этот код из Rails 4.2 в Rails 6

Ответы [ 2 ]

0 голосов
/ 30 октября 2019

Решение: замените max skip_before_filter, который устарел, на skip_before_action Я не знаю, почему Rails не выдает еще одну ошибку.

0 голосов
/ 30 октября 2019

Вы должны сделать ваши методы create и destroy для post и delete.

См. ruby ​​на рельсах, используйте метод "create" в контроллере, так как GET не работает для аналогичного вопроса.

См. https://guides.rubyonrails.org/routing.html для официального руководства по маршрутам.

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