2012-02-11 13 views
3

私はrails 3.1.3を使用しています。私は、手順に従ってjs.erbファイルを使用したい:
1.ポストコントローラにテストアクションを作成します。Rails 3.1:サーバーは常にJSではなくHTMLとして処理します

def test 
    respond_to do |format| 
     format.js 
    end 
end 

2 routes.rbをして、このアクションを定義します。

resource :posts do 
    collection do 
     get 'test' 
    end 
end 

3.作成します。 test.js.erbファイル:index.html.erbファイルで

$('#abc').append('<h1>something</h1>'); 

4:

<div id='abc'></div> 
<%= link_to "Test", test_posts_path, :remote => true %> 

しかし、私はそれがURL http://localhost:3000/posts/testで空白のページに移動して、ログサーバがあり、実行して、リンクをテストするためにクリックしてください:サーバがtest.js.erbにJS、jQueryのよう処理しない、だから、

Started GET "/posts/test" for 127.0.0.1 at Sat Feb 11 18:04:36 +0700 2012 
Processing by PostsController#test as HTML 

ファイルは実行されません。あなたが私のために説明することができますなぜサーバープロセスは、HTMLのようなコントローラで私はrespond_to format.jsを定義している?
プロジェクトのすべての応答がformat.htmlに定義されているため、テストアクションがJSに応答できないとしますか?もしそうなら、私はそれを変更できますか?そして、それが動作

//= require jquery 
//= require jquery_ujs 

:資産/ JavaScriptのでは/ application.jsを使用する行が必要:

非常UPDATE、ありがとうございました。

+0

が起こるか見て<%= link_to "Test", test_posts_path(:format => :js), :remote => true %>を試してみてください、あなた 'index.html.erb'によってロード' jquery'と 'jqueryの-ujs'ていますか? – Jef

答えて

6

あなたのGemfileにはgem 'jquery-rails'、レイアウトには<%= javascript_include_tag "jquery", "jquery_ujs" %>、またはindex.html.erbテンプレートがありますか?

+1

ああ、ありがとう。レール3.1.3では、gem 'jquery-rails'がデフォルトです。 assets/javascripts/application.jsでは、// require = jquery_ujsを挿入して動作します。それは私がそれを削除したとき私のばかです – banhbaochay

+0

これは私のための同様の問題を数時間の検索の後に解決しました!ありがとう。 – GMA

2

関連する問題