找不到控制器的操作。但这是存在的

时间:2019-10-29 22:25:18

标签: ruby-on-rails

我有这个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 :(得分:0)

您应将createdestroy方法设置为postdelete

有关类似问题,请参见ruby on rails use "create" method in controller as GET not working

有关路线的官方指南,请参见https://guides.rubyonrails.org/routing.html

答案 1 :(得分:0)

解决方案:用skip_before_filter替换已弃用的最大skip_before_action 我不知道为什么Rails不会再给出另一个错误。