2011-08-25 28 views
0

我要問一個有點模糊的問題,但這裏有雲:的Rails 2.3.8應用跳躍控制器

我保持了傳統的Rails 2.3.8應用程序。我注意到一個奇怪的行爲,首先應用程序服務沒有任何錯誤,因爲有一個app/views/controller_x/action_x.rhtmlcontroller_x.rb中沒有action_x的定義。然後,一段時間後停止提供服務,我必須在controller_x.rb中創建action_x空函數,以使其再次提供請求。

什麼可能導致這種行爲發生?如何在跳過控制器的情況下提供操作視圖?

更新: 現在發生的錯誤是:

ArgumentError in ControllerXController#action_x 

no id given 

感謝,

+0

顯示這個控制器,請 –

+0

如果你使用的是命名路由,那麼我不知道爲什麼會發生這種情況,但無論如何,IMO應該在你的控制器中有你的動作,即使它們是空的。沒有什麼比可讀的代碼更能引起你的注意。 :) – mark

回答

2

只要你有定義(action_x.rhtml)對應的視圖文件,你不必定義動作(儘管定義它是一種很好的做法,以便其他人可以更容易地理解項目中正在發生的事情),以便爲視圖提供服務。

你有什麼錯誤?你的routes.rb文件是怎樣的?

UPDATE:該操作需要一個參數,所以像這樣的東西將工作:http://localhost:3000/controller_x/action_x/1。你確定你的路線文件只有map.connect ':controller/:action/:id'嗎?

+0

我使用標準路線'map.connect':controller /:action /:id'',問題更新顯示給出的錯誤,謝謝 – wael34218

+0

我相信這個默認路由會捕獲所有的東西,http:// guides.rubyonrails.org/v2.3.8/routing.html#the-default-routes和http://guides.rubyonrails.org/v2.3.8/routing.html#default-routes – wael34218

+0

是的,但如果您已經定義在默認路由之前的更具體路由,並且匹配請求URL,路由引擎將使用它。 – Behrang