2010-03-08 219 views
-1

我是Rails路由的新手,我目前有問題,希望有人能向我解釋。我使用Rails 2.3.5Rails路由問題

首先,讓我描述我的工作細碼:

我有一個文本例子,其中有一個控制器(cars_controller)通過更新動作(有一些其他動作一起) 。更新操作需要:id參數。該edit.html.erb有一種形式:

<%的form_for:汽車,:URL => {:控制器=> '車',:動作=> '更新'}%> ...#表單內容的其餘部分。

在配置/ routes.rb中,我有更新自定義的路由規則:

map.connect '車/更新/:ID',:控制器=> '汽車' ,:action =>'update'

這工作正常。

其次,我改變了代碼。我所改變的是自定義的路由規則

map.connect「車/:動作/:身份證」,:控制器=>「汽車」

對我來說,這個規則覆蓋自寫的路由規則。當然,這個規則也被其他操作所使用,如編輯。但是edit.html.erb不起作用。它抱怨更新操作錯過了:id參數。我到的form_for助手更改爲:

<%的form_for:汽車,:URL => {:控制器=> '車',:動作=> '更新',:ID => @car}% > ...#@car是傳遞給編輯視圖的實例。

我知道,如果缺少:id參數,update動作會報錯。我不明白的是爲什麼我的第一個代碼工作(使用我自定義的路由規則),但是我的第二個代碼失敗。在我看來,我沒有在我自定義的路由規則中提供:id參數。任何人有想法?

+0

您的第三段代碼中是否缺少'(單引號)是否錯過了拼寫錯誤,或者是在您的routes.rb文件中? – dpb 2010-03-10 06:42:23

+0

這是一個錯字。抱歉。 – Steve 2010-03-10 11:56:04

回答

0

爲什麼不使用資源風格?這是爲了這個。

+0

是的,你是絕對正確的,我可以使用資源風格。但是,由於我處在學習軌道路由的過程中,我認爲如果我進一步研究它的工作方式,它不會有什麼壞處。所以儘管這個問題對你來說可能是愚蠢的,但是這是一個來自學習者的問題,所以請耐心等待,並且如果可以的話。 – Steve 2010-03-08 11:00:19

+0

所以我想這是_method和HTTP方法用來發送答案的問題。 – shingara 2010-03-08 11:15:56