这类似于 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”):
我来来回回地经历了这个,看不到发生了什么。有谁知道发生了什么?
显然,我现在很高兴回到旧语法,但我有一种讨厌的感觉,这里有些东西坏了……还是我只是愚蠢?