2011-09-19 3 views
5

これはかなり長い間、私のレールアプリでajaxを使ってきました。どういうわけか、このフォームを送信すると、警告ボックスをトリガーする必要があり、私が言うことができるものから、UJSをRails 3.1で動作させることができません

# application.js 
//= require jquery 
//= require jquery_ujs 

# the form 
= form_for @signup, :url => '/signup', :remote => true do |f| 
    = f.text_field :email, :class => 'email', :size => 26 
    = f.submit 'Notify me' 

# the controller 
def signup  # route.rb has 'match '/signup' => 'controller#signup' 
    respond_to do |format| 
    format.js 
    end 
end 

# view: signup.js.erb 
alert('wtf?'); 

..私は基本的に動作させることはできません私の最初のRails 3.1のアプリで。それはしません。フォーム提出はコントローラアクションに進み、テンプレートをレンダリングします。

Rendered teaser_pages/signup.js.erb (0.1ms) 
Completed 200 OK in 8ms (Views: 7.2ms | ActiveRecord: 0.0ms) 

jはトリガーされません。私は..

link_to 'click me', '#', :confirm => 'confirmation box!' 

をすれば期待通り..itが確認ボックスをトリガするため

UJSヘルパーは(と思う)のにロードされ、機能しています。

どうすればよいですか?見える方向はわかります。

は、 アーウィンありがとう

UPDATE:

だから、レールが代わりにtext/javascripttext/htmlを提供し、ヘッダに間違ったコンテンツタイプを証明しているようです。さらにいくつかのテストの後:私はそれが動作jquery-rails同じバージョンの新鮮なアプリケーションを実行すると

render :js => "alert('AHAHAHAHA');", :content_type => 'text/javascript' 

は、まだコンテンツタイプ text/html

とヘッダーをレンダリングします。このアプリケーションではありません。

どこを見ているのですか?

答えて

1

私は同じ問題を抱えています。私は同様のgemfileでテストアプリケーションをセットアップし、説明したのと同じ結果を得ました。新しく作成されたアプリケーションでは動作しますが、古いアプリケーションでは動作しません。当分の間、実際のレンダリングコールの前に、コンテンツタイプヘッダを手作業で設定しました。

respond_to do |format| 
    headers["Content-type"] = 'text/javascript' 
    format.js { render "the_template" } 
end 

これは一方で正しく配信CONTENT_TYPEを変更しませんでした:

respond_to do |format| 
    format.js { render "the_template", :content_type => 'text/javascript' } 
end 

この瞬間のために役立ちます希望を。

あなたは本当に解決策を得ましたか?

更新日:

少なくとも私は本当の問題を発見しました。 before_filterにcontent_typeをtext/htmlに強制していましたが、以前にテスト用に追加しましたが、無効にするのを忘れていました:

def set_header 
response.headers["Content-Type"] = "text/html; charset=utf-8" 
end 
関連する問題