2012-02-29 5 views
2

新しいマシンにレール3.0.3プロジェクトをインストールしましたが、form_tag:remote => trueに関連した奇妙な動作が発生しました。間違ったAcceptヘッダーがリクエストに設定されているようですので、AJAX/JSリクエストではなくHTMLリクエストになります。私の本番サーバーでAcceptヘッダーが正しく設定されていますRails 3.0 form_tag with remote incorrect accept:header

Accept:*/*;q=0.5, text/javascript, application/javascript, application/ecmascript, application/x-ecmascript 

仕様を:

ruby 1.8.7 (2010-08-16 patchlevel 302) [i686-linux] 
Rails 3.0.3 

しかし、新しいマシン上で私が設定していては、次のようになります。

Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 

仕様:

ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-linux] 
Rails 3.0.3 

これは私が唯一format.jsに応答するが、リクエストがformat.htmlようにしてい形私のコントローラで(_request.html.erb内側)

<div id='request-translation'> 
    <h2 class="tr-req left"><%= t('user.translation_requests.request') %></h2> 
    <%= form_tag(request_translation_artist_song_path(@artist, @song), 
      :method => :post, 
      :remote => true, 
      :class => 'left', 
      :style => 'margin-left: 20px;') %> 
    <%= languages_combobox_large(@into_languages, 'language_id').html_safe %> 
    </form> 
</div> 

そしてもちろんを生成するためのコードです。私は思った:遠隔=>真はこれを世話した。フォームの生成されたHTMLにもよさそうだ:

<form accept-charset="UTF-8" action="/xxx/request_translation" class="left" data-remote="true" format="js" method="post" style="margin-left: 20px"> 
+1

jquery.jsとjquery_ujs.jsをHTMLヘッダーに含めましたか? – iltempo

+0

jquery_ujs.jsが見つかりませんでした:)。本番サーバーでは使用されていません - これはrails.jsと同じですか? – lyricat

+0

右。私はそれから答えを出しました。 – iltempo

答えて

1

あなたがHTMLヘッダーでjquery.jsなど* jquery_ujs.js *を含めていることを確認してください。

jquery_ujsは、データリモート属性を設定したフォームをAJAX経由で送信します。それは控えめではないので、フォームもそれなしで動作します。しかし、通常のページリクエストで送信されます。

関連する問題