簡體   English   中英

無法為我的 ruby​​ 項目進行遷移

[英]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范圍內定義postdelete路由時會出現錯誤,以告訴 Rails 正在定義的 URI 使用哪個控制器和操作/方法。

要引用控制器名稱和操作,請使用小寫名稱后跟斜杠,而不是大寫控制器名稱和冒號:: ,例如:

post   '/api/login'  => 'api/sessions#create'
delete '/api/logout' => 'api/sessions#destroy'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM