2010-12-22 129 views
0

这与STI and form_for problem类似,但在那里给出的答案对于rails 3并没有很好的表现,并给出了弃用警告。但是,如果我尝试使用新的语法,我会得到一个令人困惑的结果。这是问题。sti and 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 并在日志中我看到 开始POST“/event_enquiries/1/build_provider_versions”为127.0.0.1在2010-12-22 22时零零分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} 

似乎产生相同的路线,并在日志中我得到完全相同的消息 开始POST“/ event_enquiries/1/build_provider_versions”为127.0.0.1,在2010- 12-22 22:01:58 +0000 这条路线显然不存在!

的ActionController :: RoutingError(无路由匹配 “/ event_enquiries/1/build_provider_versions”):

我已经来回通过这一点,并不能看到发生了什么事。有没有人有线索发生了什么?

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

回答

0

只需添加

:html => {:method => :put}