2016-04-27 31 views
-2

當我嘗試加載show視圖,顯示一個「維基」已創建,我得到錯誤信息Couldn't find Wiki with 'id'=無法與「ID」找到維基=

它具體指向第二行中控制器:

def show 
    @wiki = Wiki.find(params[:id]) ## shows the error in this line 
end 
def index 
    @wikis = Wiki.all 
end 

以下是我的觀點:

<h1><%= @wiki.title %></h1> 
<h3><%= @wiki.body %></h3> 

而下面是我的路線:

Rails.application.routes.draw do 
    get 'wikis/index' 
    get 'wikis/show' 
    get 'wikis/new' 
    get 'wikis/edit' 
    get 'wikis/create' 
    devise_for :users 
    get 'welcome/index' 
    root 'welcome#index' 
end 

爲什麼我會收到此錯誤消息,以及如何獲取視圖以加載?

謝謝。

+0

你試圖得到什麼網址?你的路線是什麼?什麼是服務器日誌? –

+0

是否有任何價值傳遞參數看你的滑軌控制檯 –

+0

只需將路線添加到主要問題。感謝您指出了這一點。 – sergio

回答

1

沒有:id參數,除非你根據你的路由設置如何通過它。也就是說,你必須去/wikis?id=<some id>,這可能不是你想要的。考慮一個更標準的足智多謀的路線設置:

Rails.application.routes.draw do 
    resources :wikis 
    devise_for :users 
    get 'welcome/index' 
    root 'welcome#index' 
end 

,它可以讓你去/wikis/<id>(即,在控制器wiki_path(@wiki))的演出路線,並定義indexcreate等途徑爲您正確。 http://guides.rubyonrails.org/routing.html

+0

我將路由更改爲上述示例,但仍收到相同的錯誤消息。 – sergio

+0

@sergio相應地更改鏈接。順便說一句,你怎麼期望它的工作,因爲你沒有傳遞你的'維基'id到任何地方的鏈接? –

+0

是否將'wiki_show_path'更改爲'wiki_path(@wiki)'? url助手需要知道要鏈接到哪個wiki對象。 –

0

params[:id]是最有可能nil,除非你通過它像/wikis/show?id=123,因爲路線get 'wikis/show'沒有任何PARAMS。

最常見的方法是讓resources :wikis和路線像/wikis/123

1

你有這樣的錯誤,因爲你不wiki的ID傳遞到您的節目鏈接,因此最簡單的解決方案提供了一個ID:

<%= link_to wiki.title, wikis_show_path(id: wiki) %> 

不過說實話,你的代碼看起來很醜陋與這些自定義路線wikis控制器,它可以通過將簡單地取代:

resources :wikis 

在您的routes.rb中。通過這種方式,鏈接到單wiki顯示頁面也更簡單:

<%= link_to wiki.title, wiki %> 

您可能需要閱讀Rails routing guide

0

在你的路由

resources :wikis

加入這行並刪除下面的代碼:

get 'wikis/index' get 'wikis/show' get 'wikis/new' get 'wikis/edit' get 'wikis/create'

現在你可以在網址寫:websitename.com/wikis索引,websitename。 com/wikis/id,websitename.com/wikis/id/edit編輯...並獲得你的ID參數...

瞭解更多關於資源在這個環節:Resources Link