問題タブ [rjs]
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.
ruby-on-rails - ページを RJS に置き換える
Rails プロジェクトの 1 つに投票機能を実装しようとしています。次のコード (vote.rjs 内) を使用して、ページを部分テンプレート (_vote.rhtml) に置き換えます。しかし、クリックしても投票数がすぐに更新されません。変更を確認するには、ページを更新する必要があります。
投票.rjs
page.replace("votes#{@foundphoto.id}", :partial=>"vote", :locals=>{:voteable=>@foundphoto})
部分テンプレートは次のとおりです。
_vote.rhtml
">
<%= link_to_remote "+(#{voteable.votes_for})",
:update=>"vote",
:url => { :action=>"vote",
:id=>voteable.id,
:vote= >"for"} %>
/
<%= link_to_remote "-(#{voteable.votes_against})",
:update=>"vote",
:url => { :action=>"vote",
:id=>投票可能.id,
:vote=>"反対"} %>
何か案は?ありがとう。
ruby-on-rails - アクションがレンダリングされる前に視覚効果を RJS に追加する
私は素晴らしい RJS を使い始めたばかりですが、link_to_remote などに視覚効果を入れることに慣れていて、リモートがトリガーされる前後にアクションをトリガーする方法がわかりません。
たとえば、次のリンクをご覧ください。
HTML
コントローラ:
RJS:
では、RJS は主に、アクションがレンダリングされた後、スピナーなどの視覚効果を link_to_remote に配置するためのものcall_backs
ですか? これは物事を行う良い方法ですか?
ruby-on-rails - コントローラーから Javascript 関数を複数回呼び出す (Rails 内)
複数ファイルのアップロード フォーム (html5) があり、画像の 1 つが画像サーバーに転送されたらすぐにビューを更新したいと考えています。
現在、ファイルを ajax でアップロードし、response_to_parentを使用して、すべての画像が画像サーバーに転送されたときにアップロード ビューを更新します。
アクションごとにコントローラーから Javascript 関数を複数回呼び出すことは可能ですか?
ありがとう、マイケル
javascript - 動的 div 用の AJAX page.insert_html の挿入
投稿のコメントの AJAX 作成で少し問題が発生しています。すべてがうまく機能しますが、私は index.html.erb ビューでこれを行っているので、create.js.erb は「コメント」と言う最初の div を見つけて、そこにコメントを挿入します。
以下を使用して、投稿固有の div を作成する方法を知っています。
しかし、その div を create.js.rjs で参照するにはどうすればよいでしょうか? 私はそれが最初の行に影響を与えると仮定しています:
:comments と書かれていますが、ここでの構文はわかりません。:comments_<%= post.id %> のようなものは直感的に見えますが、動作しない .erb ファイルではないためです。考え?
これが私のコードです:
/comments/create.js.rjs
ruby-on-rails - Rails コントローラーから JavaScript をレンダリングできません
ユーザーがフォームに無効なものを入力したときにエラー メッセージを表示するモーダル ウィンドウを表示したいのですが、問題がなければ別のアクションをレンダリングします。ただし、モーダルウィンドウを表示しようとすると
呼び出された実際の JavaScript のみが表示されます。
ruby-on-rails - RJS/AJAX を使用した複数の div の更新
RJS を使用して page.replace.html create.js.rjs に AJAX を実装しています。私は 1 つではなく 2 つの場所を更新しようとしています。Ryan Bates Railscastを見た後、非常に近い (と思います) が、/views/likes/create.js.rjs ファイルの構文に問題があります。状況は次のとおりです。
/views/likes/create.js.rjs にあるのは次のコードです。
私の問題は2行目にあります。div「カウンター」は、/views/question/show.html.erb ページに次のコードを表示します。
スクリーンキャストを見て、私のエラーは2行目の構文に関係していると思います。具体的には、ローカル インスタンス変数は使用できないが、変更方法がわからない、と述べています。考え?
更新:ここに私が得ているエラーがあります:
アップデート:
クラス LikesController < ApplicationController
更新:いいねフォームは次のとおりです。
ruby-on-rails - Ruby on Rails の RJS は、静的な Javascript コードを提供してユーザーの操作を処理できますか?
RoR では、Ajax (form_remote_tag を使用) が成功コードを返すと、視覚効果を処理するために Javascript も返されます。(これが RJS メカニズムです)
Fiddler を使用すると、次の応答が表示されます。
コードが非常に大きい (1 や 2k のように) 状況はありますか? RJS は、効果を処理するために既に読み込まれている何らかの静的 Javascript を使用できますか?
ページに既に読み込まれている静的 Javascript を使用する他の方法はありますか? 生の Javascript だけで、プロトタイプの Ajax 成功応答を使用して静的な Javascript コードを呼び出す必要がありますか、それとも RJS に関連する Rails メカニズムである可能性がありますか?
ruby-on-rails - RJSを使用してinnerHTMLを実際のライブインスタンス変数に置き換える
私は一生、RJSに要素のinnerHTMLをインスタンス変数の属性に置き換えることはできません。@thing.name
私はすべてのコードを示します(実際のプロジェクトから簡略化されていますが、それでも完全です)、そして解決策が誰かに明白な額平手打ちになることを願っています...
RoRでは、ランダムな漢字を表示する簡単なページを作成しました。
これは、Word
属性chinese
と。を持つオブジェクトですenglish
。
「これは何ですか?」というタイトルのリンクをクリックします。english
RJSを使用して属性を明らかにします。現在、「これは何ですか?」も非表示になっています。リンクして「別の方法を試してみませんか?」ページをリロードするだけのリンクで、新しいランダムな文字で効果的に最初からやり直します。
これは問題ありませんが、独自のデータベースクエリを作成する他の要素がページにあるため、ページの残りの部分はそのままにして、AJAX呼び出しによって新しいランダムな文字をロードしたいと思います。
これは予想よりも難しいことが判明しました。link_remote_toとpage.replace_htmlを使用してhtmlを置き換えるのに問題はありませんが、インスタンス変数を含むものを表示することはできません。
私はWordリソースとPageリソースを持っています。そこにはホームページがあり、そこでこのすべての楽しみが起こります。PagesControllerでは、ランダムな単語を取得する方法をいくつか作成しました。どちらも問題なく動作します...
コードは次のとおりです。
余談ですが、SQL呼び出し:limit => 100
は、これらのランダムな単語を循環する方法を考えた場合に備えて使用します。今のところ、それは役に立ちません。また、私が知る限り、「rand()」はMySQL固有です。
ホームページビュー(HAML)には、次のものがあります。
この場合の#は、コメントではなくdiv(指定されたID)を表すことに注意してください。これはHAMLであるためです。
「キャラクター」の部分は次のようになります(本当の理由はありませんが、erbです)。
reveal_character.rjsファイルは次のようになります。
それはすべて完全にうまく機能します。
しかし、に変換して、「文字」要素を新しいものに置き換えるRJSテンプレートをポイントしようとするとlink_to "try another?"
、 innerHTMLを静的テキストに置き換えた場合にのみ機能します。link_to_remote
そこにインスタンス変数を渡そうとすると、機能しません。
たとえば、Pages#home...の下に2番目のランダムな単語を定義したとします。
そこに追加@random_second = @random_words[2]
します。
次に、ホームページビューで、「別の方法を試してみませんか?」を置き換えます。リンク(以前はを指していましたroot_path
)、これで:
app / views / words / second_character.rjsで新しいRJSテンプレートを作成します。次のような簡単なテストで、機能していることがわかります。
しかし、これに変更すると:
nilオブジェクトをフィードしたというエラーが表示されます。
app / views / words /second_character.rjsの1行目のActionView:: TemplateError(nil:NilClassの未定義のメソッド `english_name'):1:page.replace_html(" character "、"#{@ random_second.english} ")
もちろん、実際に@ random_second、@ random_thirdなどを無限にインスタンス化することは、実際のアプリではばかげています(最終的には、ページをリロードせずに新しいランダムレコードを取得し続けるためのより良い方法を見つけます)が、ポイントはここでインスタンス変数を機能させる方法がわかりません。
これは、次のように、指定したオブジェクトを含むパーシャルをレンダリングするという私の理想的なソリューションにさえ近づいていません。
インスタンス変数を直接機能させることができないため、パーシャルを介してインスタンス変数を機能させることはできません。
私は次のようなさまざまなことを試しました:
また
私はこれらをあちこちに追加しようとしました-link_to_remote
最も明白なオプションで-そしてパラメータで何が渡されるかを研究しましたが、役に立ちませんでした。この時点で、自分が何をしているのかわからないことに気づきます。
これが私の最初の質問です。簡潔にするのではなく、必要なすべてのコードを提供する側に誤りがありました。どんな助けでも大歓迎です。
ruby-on-rails - page.insert_html が部分的に正しくレンダリングされない
以下は text_field にあります。
以下は、display_questions_search_results.rjs にあります。
ユーザーが入力するたびに、テキスト フィールドのキーワードに一致するタプルをデータベースで検索したいと思います。次に、それらの結果を表示します。しかし、現時点では、_suggestions.haml には「suggestions!!」という単語しか含まれていません。
しかし、「提案!!」を見るのではなく、suggestions
div タグでは、次のようになります。
なぜこれが行われているのかを突き止めようとしていますが、私が見つけた以前に尋ねられた質問は、私がしていることよりも複雑に思えます...
ruby-on-rails - RailsでRJSを使用してレコードを作成する
だから私はhttp://railscasts.com/episodes/43-ajax-with-rjsを見てきました
しかし、私は質問があります:
私の見解では、私は次のことをしています:
これは機能します。
create.rjsを使用してこのdivのコンテンツを変更すると、create.rjsファイルに次のようになります。
page.replace_html:testly、:partial =>'test'
簡単に言えば、これは部分的な権利を更新する必要がありますか?しかし、それは機能していません...どんな提案も大好きです!
エラーのチェックに関しても-私はまだ(別のコンピューター上にあるため)できていませんが、create.rjsの:partial =>"test"を"..."に置き換えると、それだけが置き換えられます。罰金-それはajaxの問題ではないと私に信じさせますか?
私はさらにいくつかのテストを行いましたが、部分的な宣言は機能します-機能していないように見えるのは、JavaScriptを介して部分的なコードを呼び出すことです。
パーシャルのコードは次のとおりです。