[英]Cannot rake migration for my ruby project
當我嘗試為我的 ruby 項目進行遷移時,它給了我一個錯誤“'API::sessions' 不是受支持的控制器名稱”。 有誰知道如何解決這個問題? 以下代碼來自我的 routes.rb 文件和 session_controller.rb 文件。
Rails.application.routes.draw do
get 'projects/:id', to: 'projects#show'
get 'projects', to: 'projects#index'
get 'welcome/index'
root 'welcome#index'
match '/login', to: 'sessions#new', via: :get
match '/login_create', to: 'sessions#create', via: :post
resources :users
scope :format => true, :constraints => { :format => 'json' } do
post "/api/login" => "API::sessions#create"
delete "/api/logout" => "API::sessions#destroy"
end
end
class API::SessionsController < API::ApiController
skip_before_action :require_login, only: [:create], raise: false
def create
if user = User.valid_login?(params[:email], params[:password])
allow_token_to_be_used_only_once_for(user)
send_auth_token_for_valid_login_of(user)
else
render_unauthorized("Error with your login or password")
end
end
def destroy
logout
head :ok
end
private
def send_auth_token_for_valid_login_of(user)
render json: { token: user.token }
end
def allow_token_to_be_used_only_once_for(user)
user.regenerate_token
end
def logout
current_user.invalidate_token
end
end
當您在format
范圍內定義post
和delete
路由時會出現錯誤,以告訴 Rails 正在定義的 URI 使用哪個控制器和操作/方法。
要引用控制器名稱和操作,請使用小寫名稱后跟斜杠,而不是大寫控制器名稱和冒號::
,例如:
post '/api/login' => 'api/sessions#create'
delete '/api/logout' => 'api/sessions#destroy'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.