这与STI and form_for problem类似,但那里给出的答案与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 在我看到的日志中 在2010-12-22 22:00:11 +0000
开始发布“/ event_enquiries / 1 / build_provider_versions”for 127.0.0.1但是这会给出弃用警告
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}
似乎生成相同的路由,并在日志中我得到完全相同的消息 在2010-12-22 22:01:58 +0000开始POST“/ event_enquiries / 1 / build_provider_versions”为127.0.0.1 这条路线显然不存在!
ActionController :: RoutingError(没有路由匹配“/ event_enquiries / 1 / build_provider_versions”):
我一直在这里来回走动,看不到发生了什么。有谁知道发生了什么?
显然我现在很高兴退回旧的语法,但我有一种令人讨厌的感觉,这里有些东西被打破了......或者我只是愚蠢?
答案 0 :(得分:0)
只需添加
:html => {:method => :put}