使用form_tag进行路由错误

时间:2011-02-09 17:32:50

标签: ruby-on-rails forms routing

我有一个路由问题,我似乎无法理解。

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

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

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

在控制器的更新操作中,我打算处理此特定提交。但是我收到路由错误声称没有到'/ projects / 15'的路由。我检查了请求是否正在使用POST。显然,对于'/ projects / 15'的POST存在路由(例如,常规更新路由正常工作并发布到该确切路由)。

我错过了什么?

你的时间,你 欧文

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

我有类似的问题,请看here

如果对象不是新的,那么rails(至少3个这样做)将寻找PUT路由,而不是POST。如果您使用Firebug检查实际发送到服务器的内容,您将看到发出了一个POST,但是有一个参数“_method = put”。

Rails将寻找更新现有对象的PUT路由,这符合Fielding对REST的定义。