0

这类似于 STI 和 form_for 问题,但那里给出的答案与 rails 3 不兼容,并给出了弃用警告。但是,如果我尝试使用新语法,我会得到一个非常混乱的结果。这就是问题所在。

event_enquiry 是一种查询,在旧语法中我会这样做

<%= form_for( :event_enquiry, @enquiry, :remote => true, :url=>{:id=>@enquiry.id,:action=>:build_provider_versions}

这会生成预期的路径 /event_enquiries/1/build_provider_versions 并在日志中我看到 Started POST "/event_enquiries/1/build_provider_versions" for 127.0.0.1 at 2010-12-22 22:00:11 +0000

但这给出了弃用警告

DEPRECATION WARNING: Using form_for(:name, @resource) is deprecated. Please use form_for(@resource, :as => :name) instead. 

但是虽然新的语法

<%= form_for(  @enquiry, :as => :event_enquiry,:remote => true, :url=>{:id=>@enquiry.id,:action=>:build_provider_versions}

似乎生成了相同的路由,并且在日志中我得到完全相同的消息 Started POST "/event_enquiries/1/build_provider_versions" for 127.0.0.1 at 2010-12-22 22:01:58 +0000 该路由显然不存在!

ActionController::RoutingError(没有路由匹配“/event_enquiries/1/build_provider_versions”):

我来来回回地经历了这个,看不到发生了什么。有谁知道发生了什么?

显然,我现在很高兴回到旧语法,但我有一种讨厌的感觉,这里有些东西坏了……还是我只是愚蠢?

4

1 回答 1

0

只需添加

 :html => {:method => :put}
于 2011-09-16T02:15:14.750 回答