2011-02-09 114 views
1

我有一个路由问题,我似乎无法得到我的头。使用form_tag路由错误

我有一个项目资源,其中所有restfull操作按预期方式工作。

现在我想增加通过一个小的弹出窗体来更新一个特定属性的能力。所以在这个弹出我使用:

form_tag (@project) do 
    text_field_tag :attribute_i_want_to_update, '' 
    submit_tag 'go' 

在控制器的更新行动,我打算处理这个特定的提交。但是,我收到一个路由错误,声称没有路由到'/ projects/15'。我检查了请求正在使用POST。很明显,一条路径存在于'/ projects/15'的POST(例如,定期更新路由正常工作并发布到该确切路由)。

我错过了什么?

THX您的时间,
欧文

回答

0

我有类似的问题,看它here

如果对象是不新的,然后rails(至少3个)会寻找PUT路由,而不是POST。如果您检查真正发送给服务器的内容,例如使用Firebug,您将看到POST已经创建,但是有一个参数“_method = put”。

Rails将寻找PUT路由来更新现有对象,这与Field的REST定义一致。

+0

这就是thx! – ErwinM 2011-02-17 19:45:02

2

您是否尝试过将其指定为一个PUT请求:

 
form_tag(@project, :method => :put) do 
    text_field_tag :attribute_i_want_to_update, '' 
    submit_tag 'go'