これは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が生成され、ログに、2010-12-2222:00:11+0000に127.0.0.1の開始POST"/event_enquiries / 1/build_provider_versions"が表示されます。
しかし、これは非推奨の警告を出します
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-2222:01:58+0000に127.0.0.1のPOST"/ event_enquiries / 1/build_provider_versions"が開始されましたルートが存在しないようです!!
ActionController :: RoutingError(「/ event_enquiries / 1 / build_provider_versions」に一致するルートはありません):
私はこれを行ったり来たりしていて、何が起こっているのかわかりません。誰かが何が起こっているのか手がかりを持っていますか?
明らかに、今のところ古い構文に戻って満足していますが、ここで何かが壊れているという不快な気持ちがあります...それとも私はただ愚かですか?