我有这个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
答案 0 :(得分:0)
您应将create
和destroy
方法设置为post
和delete
。
有关类似问题,请参见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不会再给出另一个错误。