2012-03-23 5 views
1

私のajaxyコールは機能しませんでした。その後、ランダムに動作するようになり、さらにcoffeescriptを追加すると動作を停止しました。私は追加されたcoffeescriptを取り除いたが、それでも仕事はできなかった。Rails 3フォームリモートが動作しない

rails.jsがロードされていないことに気づきました(Firebug/Chromeインスペクタの検査による)。 rails.jsはレール3.2.1のjquery_ujs.jsに置き換えられましたか?私は新しいプロジェクトを開始し、rails.jsもそこになかったことに気づいた。ここで

は、フォームの:私は "更新ビュー" をクリックすると、コンソールはこれを

<%= form_tag("#{tybleau_api_path}.json", remote: true, id: "sportForm", :'data-type' => 'json') do%> 
    <%= select_tag("state", options_from_collection_for_select(@states, "HometownState", "HometownState"), prompt: "Choose a State", class: "submittable") %> 
    <%= submit_tag "Update View" %> 
<% end %> 

表示されます。

Started POST "/tybleau/api.json" for 127.0.0.1 at 2012-03-22 17:40:03 -0700 
Processing by TybleauController#api as JSON 
    Parameters: {"utf8"=>"✓", "authenticity_token"=>"I6752Fit6cCIuASMr4/FD+yLTEBrS2oPhnNBbJQE67k=", "state"=>"AZ", "commit"=>"Update View"} 
    Player Load (745.1ms) SELECT FirstName FROM `players` INNER JOIN `players_to_teams` ON `players_to_teams`.`player_id` = `players`.`id` INNER JOIN `teams` ON `teams`.`id` = `players_to_teams`.`team_id` WHERE `teams`.`SportTypeId` = 2 AND `players`.`hometownstate` = 'AZ' 
    EXPLAIN (0.4ms) EXPLAIN SELECT FirstName FROM `players` INNER JOIN `players_to_teams` ON `players_to_teams`.`player_id` = `players`.`id` INNER JOIN `teams` ON `teams`.`id` = `players_to_teams`.`team_id` WHERE `teams`.`SportTypeId` = 2 AND `players`.`hometownstate` = 'AZ' 
EXPLAIN for: SELECT FirstName FROM `players` INNER JOIN `players_to_teams` ON `players_to_teams`.`player_id` = `players`.`id` INNER JOIN `teams` ON `teams`.`id` = `players_to_teams`.`team_id` WHERE `teams`.`SportTypeId` = 2 AND `players`.`hometownstate` = 'AZ' 
+----+-------------+------------------+--------+---------------+---------+---------+----------------------------------------------+--------+-------------+ 
| id | select_type | table   | type | possible_keys | key  | key_len | ref           | rows | Extra  | 
+----+-------------+------------------+--------+---------------+---------+---------+----------------------------------------------+--------+-------------+ 
| 1 | SIMPLE  | players_to_teams | ALL | NULL   | NULL | NULL | NULL           | 260239 |    | 
| 1 | SIMPLE  | players   | eq_ref | PRIMARY  | PRIMARY | 4  | mysql_development.players_to_teams.player_id |  1 | Using where | 
| 1 | SIMPLE  | teams   | eq_ref | PRIMARY  | PRIMARY | 4  | mysql_development.players_to_teams.team_id |  1 | Using where | 
+----+-------------+------------------+--------+---------------+---------+---------+----------------------------------------------+--------+-------------+ 
3 rows in set (0.00 sec) 

Completed 200 OK in 1034ms (Views: 154.7ms | ActiveRecord: 825.9ms) 

だから私はそれが働いている知っています。 remote: trueへの呼び出しを取り除くと、jsonオブジェクトとして期待される結果が得られます。

jQuery -> 
    $("#sportForm") 
    .bind 'ajax:beforeSend', (xhr, settings) -> 
    alert 'loading' 
    .bind 'ajax:success', (data, status, xhr) -> 
    alert 'success' 
    .bind 'ajac:complete', (xhr, status) -> 
    alert 'success' 
    .bind 'ajax:error', (xhr, status, error) -> 
    alert 'error' 

そこにタイプミスか何かがあります:

は、ここに私のCoffeeScriptのですか? rails.jsは火かぶりで見ることができますか?それは、ブラウザによって要求されていない表示されていない場合

おかげ

答えて

3

SlickGridに問題があったことが分かります。SlickGridまたは必要なjQuery-UIライブラリのいずれかがいくつかの名前付けの問題を抱えていて、Ajaxレスポンスの焦点を盗んでいました。私はSlickGrid以外のものを使用することに決めたので、問題を完全に診断したことはありませんでしたが、何も動いていません。 Railsの3.2.1で

、何rails.jsそれはjquery_ujs.jsだ、ありません。

ありがとうヘルプ

0

rails.jsは、放火犯に見えるはずです。 rails.jsがロードされないようにするレイアウトまたはjavascriptマニフェストファイルに問題がある必要があります。 Railsの中

3.1+、確認してください。

  1. Gemfileは含まれています

    gem 'jquery-ujs'

    (それを追加し、そうでない場合はbundleを実行)

  2. アプリ/ビュー/レイアウト/ application.html.erbが含まれています

    //= jquery

    //= jquery-ujs

    <%= javascript_include_tag 'application' %>

  3. アプリ/資産/ JavaScriptを/ containtsをapplication.js

    (アセットパイプラインを使用していると仮定します)

その場合は、ページをロードするとき、あなたはFirebugの中jquery.jsjquery_ujs.jsを参照するか、ページのソースでなければなりません。

+1

rails.jsが 'jquery_ujs.js'に置き換えられましたか?私は新しいプロジェクトを開始し、 'rails.js'もそこにはなかった。 –

+0

rails.jsはjquery-ujsプロジェクトにあります。[jquery-ujs on github](https://github.com/rails/jquery-ujs/tree/master/src)を参照してください。アプリケーション内のファイルはrails.jsになります。まだ存在しない場合は、jquery-railsをGemfileに追加して入手してください。 rails.jsがjavascript_include_tagまたはapplication.jsマニフェストファイル経由でテンプレートに含まれていることを確認する必要があります。 –

+0

よくないかもしれませんが、[jquery-ujs repo](https://github.com/rails/jquery-ujs)のreadmeのインストールセクションをチェックしてください。 Rails 3.1の下でそれを追加するメトリック: // jquery //必要jquery_ujs マニフェスト –

関連する問題