2015-07-10 51 views
0

導軌上的紅寶石控制器獲得ID我正在使用ruby on rails創建基本博客。我對它很陌生。我有兩個名爲category和post_controller的控制器。兩者都有如圖所示的顯示功能:如何使用params [:id]

的類別控制器:

Category.find(params[:id]) 

爲post_controller

Post.find(params[:id]) 

當我輸入網址

"localhost:3000/post_controller/2 

它顯示ID的帖子2. 但是,當我爲類別控制器做同樣的事情:

"localhost:3000/categories/2 

它顯示了一個錯誤,說

No route matches [GET] "/categories/1" 
Rails.root: /home/root/myFirstBlog 

而且是ofcourse,我有一個元素在我的類別數據庫ID 2. 然而,當我使用這個網址:

"localhost:3000/categories/show?id=2 

它很明顯,但兩個控制器之間有什麼區別,即使它們具有相同的代碼。

P.S.我很困惑,哪些信息是相關的,請在評論中告訴我。我會根據需要編輯我的問題。

Rails.application.routes.draw do 

    get 'categories/index' 
    get 'categories'=>'categories#index' 
    get 'categories/edit' 
    get 'categories/new' 
    get 'home/index' 
    get 'post_controller/edit' 
    get 'post_controller/index' 
    get 'categories/edit' 
    get 'categories/index' 
    get 'categories/new' 
    get 'categories/show' 
    resources :category 
    resources :post_controller 
    root 'post_controller#index' 
end 
+1

你能過去你的路由文件。 –

+0

@AnantKolvankar我做到了。請檢查一下。 –

+0

可能是你沒有id = 1的類別在第一位。嘗試使用id 2而不是1 – uday

回答

1

第一:resources :thing應pluralised

resources :things添加這些routes

因此,不需要您的路線文件中的所有get 'categories/*'

我不知道post_controller是什麼。可能應該重新命名爲。 resources :posts

這些事情可能是你看到不一致的原因。沒有深入研究它就很難說出究竟發生了什麼。

你的路由文件看起來應該是這樣的:

Rails.application.routes.draw do 
    resources :category # handles actions for all categories CRUD 
    resources :posts # handles actions for all posts CRUD 
    root 'post_controller#index' #root view. i.e. "/" 
end 
+0

我想通了。不管怎麼說,多謝拉! :) –

0

看起來你拼錯了URL中的控制器。如果您的控制器是類別localhost:3000/categories/2應該工作。