2010-03-08 158 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