問題タブ [ujs]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
jquery - 目立たない jquery と rails
私は長い間 UJS のファンであり、通常はすべてのコードを application.js (プロトタイプではなく jquery) に入れています。
ただし、放置するとapplication.jsが肥大化する巨大なプロジェクトに遭遇しました。特に、ほとんどの機能/動作が特定のページに基づいているため、それが発生したくありません。現在、次のように特定のパーシャルに JavaScript 呼び出しを配置する傾向があります。
_test_partial.html.haml:
または、「目立たない」ものが本当に必要な場合:
しかし、コード/動作を編集する必要があるかのように、これはまだ非常に目立たないように思えます。関連する部分を探す必要があります。一方、編集する必要がある関数の application.js を 1 MB 精査するのは簡単ではありませんか (多くのページがあり、おそらくページ固有のコードがたくさんあるでしょう)。
これに対する通常の見方は何ですか?js ファイルに test_partial.js.erb os 何かのような RJS という名前を付ける方法はありますか?
jquery - jquery +railsujsドライバー+googleマップv3を使用する場合のIE8jqueryエラー。回避策?
jquery 1.4.4と1.5.1でテストし、両方で問題を確認しました
jquery + rails ujsドライバー(githubから)+ google Maps v3を使用している場合、マップマーカーをクリックすると、IEエラー「Fail」が発生します。完全なCDNホストのjqueryv1.5.1を使用する場合、IEデバッガーは2838行目を指します(この問題はjquery.min.jsまたはバージョン1.4.4でも発生することに注意してください)。
このエラーをトリガーするのはujsドライバーであることを確認しました。ドライバが削除されたときに、マーカーをクリックしてもエラーは発生しません。
簡単なライブの例は、http://avioing.com/maps/marker-simple.htmlから入手できます。このページは、Googleのサンプルページhttp://code.google.com/apis/maps/documentation/javascript/examples/marker-simple.htmlの正確なコピーです。jqueryと最新のujsドライバーをロードするためのスクリプト呼び出しのみを追加しました。マップマーカーをクリックすると、エラーを再現できるはずです。
サンプルページはFFとChromeで正常に機能し、エラーはIEでのみ発生します
http://avioing.com/maps/marker-simple_no_ujs.htmlおよび http://avioing.com/maps/marker-simple_no_marker.htmlも参照 してください。どちらも、この問題は発生しません。
誰かが回避策を知っていますか?
ruby-on-rails-3 - IEでjquery検証がサイレントに無視される - rails ujsドライバー+ jquery-validation + ajaxフォームを使用する場合
問題が ujs ドライバーにあるのか jquery-validate プラグインにあるのかはわかりません...
jquery UJS ドライバー (最新、github から) + jquery-validate プラグイン (最新、github から) + ajax フォーム (data-remote タグ経由) を使用する場合、検証ルールは黙って無視されます。IE 8 でのみ、chrome と FF が正常に動作します。
github の最新の jquery-validation を使用して、jquery 1.4.4 および jquery 1.5.1 でテストされています。
簡単な例を次に示します: http://avioing.com/validate/example.htmlおよび http://avioing.com/validate/example_no_ujs.html
都市フィールドを空のままにして、フォームを送信してみてください。最初のケースでは何も起こりません。2 番目のケースでは、検証メッセージがトリガーされます。
2 つのファイルの唯一の違いは、後者のファイルのフォームから「data-remote」タグを削除し、検証がトリガーされるようになったことです。
jquery - コントロール、Ajaxスタイルをクリックしたときにフォームを非同期で送信するにはどうすればよいですか?
Rails3アプリでは、ラジオコントロール(チェックボックスではないroot
)で表されるブール属性があり、-Ajaxスタイルの新しい値を自動的に保存できるようにしたいと考えています。root
現在、2つの送信オプションがあります。
- 期待どおりに
submit_tag
機能します。アクションはXHRを介して呼び出され、set_root.js.erb
テンプレートはそれに応じてページを更新しますが、そのために別のボタンをクリックする必要はないので、次のことを試しました。 :onclick => "this.form.submit();"
私のラジコンに追加します。これはフォームを送信しますが、古典的な、非ajaxの方法であるため、htmlテンプレートが見つからないというエラーが発生します。
ラジコンをクリックしたときにフォームを非同期で送信するにはどうすればよいですか(おそらくUJSアプローチ)?
注:プロジェクトでjQueryを使用しています。
javascript - 選択した要素が変更されたときにフォームのコンテンツを更新するRails
選択ボックスと3つのテキスト入力ボックスを備えたフォームがあります。選択ボックスのオプションが変更されたら、選択したオプションに対応する値で3つのテキスト入力ボックスを更新したいと思います。値はサーバーに保存されているモデルオブジェクトです。
Rails 3を使用していて、物事を邪魔にならないようにしようとしていますが、これを行うためのクリーンな方法を見つけることができません。私はいくつかの恐ろしい、厄介な解決策を思いついたが、まだきれいなものは何もない。これをすべて結び付けるための良い方法は何でしょうか?特に、サーバーからモデルオブジェクトを要求するselect要素で問題が発生しています。
フォームを生成するビューは次のとおりです。
したがって、「地域」が変更されるたびに、市/州/国のフィールドにデータを入力したいと思います。リージョンもフォーム自体の一部であることに注意してください。
javascript - Rails 3/JQueryフォームがページ上で繰り返されます
私はこれに似た形をしています-
非常に簡単です-ページに対して20回繰り返します。基本的な目的は、ユーザーがフォームリストを下に移動し、値を1回だけ更新してから、次に進むようにすることです。
少し良くするために、私はAJAXを介して送信を行っており、更新されていることを示すことができるようにしたいと考えていました。しかし、私はそれを正しく動作させることができないようです-これが私が使用しているjavascriptです:
私は「これ」の使用が間違っていることを99%確信していますが、その理由をデバッグできないようです。
ruby-on-rails-3 - 単純なJavaScriptを使用し、Rails3とUJSで引数を渡す
控えめなJavaScriptについてのRailscastを見て、多数のチュートリアルを読みましたが、Rails3の控えめなJavaScriptについて2つのことがまだ混乱しています。
- 単純なJavaScriptのエンドポイント(いくつかの要素を非表示にしたり、CSSクラスを追加したり...)
- JSに引数を渡す
これをサンプルコードで明確にしましょう。IDが「sample」の要素をフェードアウトするリンクを作成したい:
JSを実行できるようにするには、URLは何である必要がありますか?たとえば「javascript」という名前のコントローラーの新しいアクションである必要があります。これにより、次の内容を含むjavascript.js.erbのJSにアクセスできます。
また、ujsに関する2番目の質問は、JSへの引数の受け渡し(この例ではタイムアウト)に関連しています。私は書くことができます:
しかし、javascriptでデータタイムアウトにアクセスする方法がわかりません。
Rails 3.0.5、JQuery 1.5.2、jquery-ujsを使用しています。
ruby-on-rails-3 - Rails3 用の邪魔にならない JavaScript ドライバー
Rails3 dojo-toolkit UJS-driver を探すのに何時間も費やしましたが、運がありませんでした。Google、github、道場の公式サイト、その他のブログは役に立ちませんでした。
rails3 には、実際に作成されたドライバーが 3 つしかないようです。これらは私が見つけたドライバーです:
二人の役人:
- Prototype-UJS (rails 3.0 のデフォルト)。
- jQuery-UJS (オプション。Rails 3.1 ではデフォルトのオプションになります)。
2 つの非公式:
既存の ujs-drivers でこのリストを完成させることができます。
ruby-on-rails - Rails 3の単純なAJAX削除は、authenticity_tokenがリクエストとともに送信されないため機能しません
私は次のような単純なajax削除リクエストを送信しています:
すべてのページに含まれているcsrf_meta_tagタグのおかげで、リクエストがあるページにはauthenticity_tokenが含まれていることに注意してください。
ログを見ると、削除リクエストにauthenticity_tokenがないことがわかります。
2011-04-2211:21:21-0700に127.0.0.1のDELETE"/invitations / 5"を開始しました。パラメーターとしてのInvitationsController#destroyによる処理:{"id" => "5"}
ここで、コードから「:remote =>:true」を削除すると、つまり、通常のページの読み込みを実行すると、削除が機能し、ログファイルに次のように表示されます。
2011-04-2212:52:19-0700に127.0.0.1のPOST"/invitations / 10"を開始しました。HTMLパラメーターとしてのInvitationsController#destroyによる処理:{"authenticity_token" => "qlT8uX / WGQeOQSmVZzw1v8rFdSTHDRbzNY0zpSc9mV0 ="、 "id" =>"5"}
AJAXの場合はDELETE、AJAX以外の場合はPOSTなのはなぜですか?DELETEにauthenticity_tokenが含まれていないのはなぜですか?
助けてくれてありがとう。
ajax - Ajax を使用してリモート呼び出しを行い、結果の JSON オブジェクトをレンダリングする Rails 3 + UJS の簡単な例
Rails 3 アプリに Ajax 機能を追加しようとしています。
具体的には、Ajax リクエストを送信してコントローラー内のリモート関数を呼び出すボタンが必要です。このボタンは、その後 API を照会し、JSON オブジェクトをページに返します。
JSON オブジェクトを受け取ったら、内容を表示したいと思います。
これらすべては、新しい Rails 3 UJS アプローチでも行われます。このオンラインの良い例/チュートリアルはありますか? 私はグーグルでそれを見つけることができませんでした。ボタンをエントリ ポイントとして使用する単純な例 (つまり、ユーザーがボタンをクリックしてこのプロセスを開始する) も機能します。
編集 別のアプローチでこれを試してみましょう。このボタンで、JSON を返す外部 API に対してクエリを実行し、その JSON をページに表示したいと考えています。どこから始めればいいのかわからない。ボタン自体が外部 API を照会しますか? コントローラーを経由して、コントローラーに外部 API のクエリを実行させ、JSON を取得し、JSON をこのページに返す必要がありますか? この JSON のコンテンツを表示/アクセスするにはどうすればよいですか? 正直なところ、Rails 3.x で JSON を処理する良い例が見つかりません...