【发布时间】:2010-12-22 22:17:56
【问题描述】:
这类似于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 开始 POST "/event_enquiries/1/build_provider_versions" 为 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”):
我来来回回地经历了这件事,看不到发生了什么。有谁知道发生了什么?
显然,我现在很高兴回到旧语法,但我有一种讨厌的感觉,这里有些东西坏了......还是我只是愚蠢?
【问题讨论】:
标签: routing ruby-on-rails-3 form-for sti