我是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