我有一个路由问题,我似乎无法理解。
我有一个项目资源,其中所有restfull操作都按预期工作。
现在我想添加通过一个小弹出窗体更新一个特定属性的功能。所以在这个弹出窗口中我使用:
form_tag (@project) do
text_field_tag :attribute_i_want_to_update, ''
submit_tag 'go'
在控制器的更新操作中,我打算处理此特定提交。但是我收到路由错误声称没有到'/ projects / 15'的路由。我检查了请求是否正在使用POST。显然,对于'/ projects / 15'的POST存在路由(例如,常规更新路由正常工作并发布到该确切路由)。
我错过了什么?
你的时间,你 欧文
答案 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的定义。