我是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參數。任何人有想法?
您的第三段代碼中是否缺少'(單引號)是否錯過了拼寫錯誤,或者是在您的routes.rb文件中? – dpb 2010-03-10 06:42:23
這是一個錯字。抱歉。 – Steve 2010-03-10 11:56:04