2012-05-22 33 views
0

在Rails 3.2.2,我想設置的自定義網址(使用狀態2位:由縮寫,而不是默認的:ID)Rails的to_param定製的路線不工作

讀谷歌搜索結果和計算器的頁面,我已經想出了這一點:

路線

match 'cars/:abbr' => 'states#show', :as => 'state_abbr' 

型號

def to_param 
    abbr 
end 

控制研究呃

@state = State.find_by_abbr(params[:id]) 

狀態#顯示頁面拋出錯誤(未定義的方法`全名」的零:NilClass),因爲路由似乎並沒有被找到簡稱模型。

運行耙路線,我得到:

root/     states#index 
state_abbr /cars/:abbr(.:format) states#show 

感謝您的幫助

+1

你確定錯誤不是由於'find_by_abbr(params [:id])''?檢查一下哪些參數正在拋出 - 使用這些路徑你應該看到':abbr'(或許':state_abbr')而不是':id'。 –

回答

0

你想用params[:abbr]params[:id]。如果你想使用:id改變你的路線是'cars/:id'而不是'cars/:abbr'

+0

我想'@state = State.find_by_abbr(PARAMS [:縮寫])',但同樣的錯誤被顯示出來 未定義的方法'全名「的零:NilClass – xta

+0

然後,它聽起來像你find_by_abbr沒有找到項目,你」重新尋找。您是否仔細檢查過您的數據庫是否正在使用您正在查找的abbr條目的州表中的條目? – dj2

+0

在查找之前,您還可以在控制器中使用'p params'來查看它是否具有您期望的':abbr'值。 – dj2