2011-06-27 8 views
0

私はサイトをRails 2.xからRails 3.0に変換していましたが、これまでのところ、私がform_forを持っている問題を除いて、とても良いものでした。私はremote_form_forからform_for, :remote => trueに切り替えることを知っていますし、新しいスタイルのAJAXは通常のハイパーリンクにはうまく機能しています。リモートAJAX form_forがJSとしてではなくHTMLとして送信されるのはなぜですか?

フォームでは、フォームがJSではなくHTMLとして送信され、結果としてコントローラによって正しく処理されないという奇妙な問題が発生します。ここに私が持っているものがあります。

<% form_for (AuthorSubscription.new), :remote => true, :id => "subscribe_form" do |f| %> 
    <%= f.submit "Subscribe" %> 
<% end %> 
あなたは data-remote属性があることがわかります

<form accept-charset="UTF-8" action="/author_subscriptions" class="new_author_subscription" data-remote="true" id="new_author_subscription" method="post"> 
    <div style="margin:0;padding:0;display:inline"> 
    <input name="utf8" type="hidden" value="&#x2713;" /> 
    <input name="authenticity_token" type="hidden" value="NxCF177nMDfL6QsYjesBUOUUJ9QdzKIdZYQjGAaGYmA=" /> 
    </div>   

    <input id="author_subscription_submit" name="commit" type="submit" value="Subscribe" /> 
</form> 

のHTMLになり

、すべてが良いようです。しかし、ロガーが私を見せている

Started POST "/author_subscriptions" for 127.0.0.1 at 2011-06-27 16:21:29 -0400 
    Processing by AuthorSubscriptionsController#create as HTML 

私が間違っていることについてのアイデアはありますか?

私は、あなたがコントローラでフォーマットを与えるべきだと思う
+0

form_forタグの記号に等号を追加したいと思います。これはこのエラーに役立たないかもしれません。しかし、そうすべきです。 Like <%= form_for ...%> – shajin

+0

良いキャッチ、shajin - ありがとう!問題を悲しげに修正しなかったが、コードを標準にする。 – isthmus

答えて

1

class AuthorSubscriptionsController < ApplicationController 
    @@ajax_calls = [:your_ajax_method] 
    respond_to :html, :except => @@ajax_calls 
    respond_to :js, :only => @@ajax_calls, :layout => false 

    def your_ajax_method 
     etc... 
1

これは私に起こった、と私は特に、その後、application.html.erbで

<%= javascript_include_tag "jquery-1.6.2.min.js" %> 

が含まれている場合ことがわかりましたそれは私のリモートフォームを壊す。私はあなたが再び動作するまで、一度に1つのjsスクリプトを削除してみることをお勧めします。

<%= javascript_include_tag :all %> 

jQueryをインストールしている場合は避けてください。

関連する問題