私の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は火かぶりで見ることができますか?それは、ブラウザによって要求されていない表示されていない場合
おかげ
rails.jsが 'jquery_ujs.js'に置き換えられましたか?私は新しいプロジェクトを開始し、 'rails.js'もそこにはなかった。 –
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マニフェストファイル経由でテンプレートに含まれていることを確認する必要があります。 –
よくないかもしれませんが、[jquery-ujs repo](https://github.com/rails/jquery-ujs)のreadmeのインストールセクションをチェックしてください。 Rails 3.1の下でそれを追加するメトリック: // jquery //必要jquery_ujs マニフェスト –