2011-05-03 89 views
1

所以,我的工作是在梁2偉大的代碼很簡單的一點,但在Rails的休息3動態查找在Rails 3

在Rails 2我已經在使用一個瀏覽器顯示頁面內容如下從頁面模式控制器:

class ViewerController < ApplicationController 
show 
    @page = Page.find_by_name(params[:name]) 
end 

我的觀衆放映視圖有以下幾點:

<%= @page.body %> 

我的routes.rb文件有以下處理這個動作:

map.view_page ":name", :controller => 'viewer', :action => 'show' 

這是我在Rails 3中得到使用此代碼錯誤:

undefined method `body' for nil:NilClass 

現在,我知道路線在Rails 3中被改變,但還有什麼我缺少做這個簡單的代碼在Rails 3應用程序中工作?我似乎無法在任何地方找到答案。謝謝!

+0

什麼不起作用?我們有任何錯誤? – Thilo 2011-05-03 20:54:45

+2

請嘗試使用'find_by_name!'代替。通過的'params [:name]'變量可能不是您期望的。 – 2011-05-03 21:35:38

+0

謝謝,瑞安!添加「爆炸」就像一個魅力。謝謝你的幫助! – 2011-05-05 00:14:09

回答

0

好吧,Rails 3中已經得到新的路由sintax

get "/:name" => 'viewer#show' 

相關鏈接:

UPD

你的錯誤是由於Rails不能與你:name找到任何頁:

  • 沒有與這名
  • 任何頁面沒有任何:在你的params名都哈希
+0

這很可能不會解決他的問題。 – 2011-05-03 21:35:11

+0

是的,我沒有注意 – fl00r 2011-05-03 21:37:35

+0

它可能,問題是:名稱參數爲零時,它擊中控制器。 – DGM 2011-05-03 21:37:56

2
match ":name", :to => "viewer#show", :as => "view_page" 

不試,不知道它的匹配 「/:名稱」 或者 「:name」 是也沒關係。

+0

謝謝迪納提:)非常有幫助。我的路線已經與您的代碼非常相似,但仍然無法正常工作。我需要我的控制器中的「爆炸」。謝謝你的提示! – 2011-05-05 00:15:20

+0

所以你可以驗證我的答案:)... – Dinatih 2011-05-05 14:45:06

0

請確保您的數據庫具有填充內容的正文字段,它應該像您擁有它一樣工作。

domain.com/viewer/show?name=home