2015-05-03 18 views
0

我想獲取特定用戶的評論。我試圖打導軌路由不會按預期方式發送給控制器

var reviews_url = '/users/' + profile_id + '/reviews.json'; 

但在日誌中

Started GET "https://stackoverflow.com/users/23/reviews.json" for ::1 at 2015-05-03 10:50:01 -0700 
Processing by ApplicationController#index as JSON 

我能改,使這條路線打reviews#index看到它沒有擊中reviews#index

routes.rb

resources :users do 
    resources :reviews 
end 

rake routes

GET /users/:user_id/reviews(.:format)    reviews#index 

編輯添加路由

get 'auth/:provider/callback', to: 'sessions#create' 
root 'application#index' 
get '*path' => 'application#index' 
resources :users do 
    resources :reviews 
    resources :friendships 
end 

注:當我移動resources上述get '*path' => 'application#index'它按預期工作。不過,我希望每個電話都通過application#index(該應用程序是一個知道當前用戶的SPA,基於application#index中的用戶)。也許我應該命名空間這些路線到api

+0

路線看起來正確......你的'ApplicationController'和'ReviewsController'看起來像什麼。你正在做認證或授權,可能會絆倒它? –

+1

這真的很奇怪。你能發佈你的整個路線文件嗎?我能想到的唯一的事情就是在評論控制器中沒有定義索引操作。在您的應用程序控制器中是否有索引方法(看起來很奇怪)。 – jphager2

+0

@ jphager2在這種情況下,它應該抱怨失蹤的行爲。 –

回答

1

好吧,你需要以不同的方式思考它。

路由只匹配一個動作。因此,如果您想要在特定請求上執行某些代碼,則無法通過應用捕獲所有路由來執行此操作。

因此,首先,從routes.rb

然後取出get '*path' => "application#index"application_controller.rb添加before_action:

class ApplicationController < ActionController::Base 
    before_action :do_this_before_all_actions 

    # ... 
    private 
    def do_this_before_all_actions 
    # the code you want to run 
    end 
end 

因此,每一個控制器,該控制器從ApplicationController中繼承將具有第一執行該代碼。