0

編集アクションで、edit.html.erb をレンダリングするだけでなく、edit.js.erb ファイルもトリガーする必要があるシナリオがあります。

      def edit
    @page_id = params[:id]
    respond_to do |format|
    format.html
    format.js
    end
  end

ビューだけがレンダリングされますが、私のedit.js.erbはまだトリガーされていません。

4

3 に答える 3

0

js で応答し、以下のコードを記述します。

edit.js.erb

$('body').html('<%=j render "edit" %>');
于 2012-08-17T09:55:12.283 に答える
0

それが何をするかについてのあなたの印象は間違っています。

JavaScript を実行したい場合は、edit.html.erb ファイルに以下を含める必要があります。

<%= javascript_include_tag "jsfilename" %>

javascript を public/javascripts/jsfilename または同様の場所 (public/assets/javascripts/) に保存します。

format.html、format.js への応答は、その形式でビューを要求するためのものです。

例えば。edit.html を参照すると html.erb ビューが表示され、edit.js を参照すると js.erb ビューが表示されます。この機能は、Web ページに JavaScript 機能を追加するのではなく、同じコンテンツを異なるファイル形式でリクエストできるようにするためのものです。

于 2012-08-17T09:58:14.640 に答える
0

両方の anser を使用して動作させることはできますが、規則には従いません。edit.js は Ajax 呼び出し用です。

あなたがしているように見えるのは、パーシャルを使用してページを構築することです。次に、他のプログラマーにとって明確になるように、命名規則 (ファイル名を _ で始める) に従う必要があります。

次に、サイトが JavaScript なしで機能することを常に確認する必要があるため、編集ページで Javascript が必要になることは決してありません。JavaScript は、ユーザー エクスペリエンスを向上させるための補完的なものです (ページを更新せずに ajax を使用して編集を行うなど)。

要約: - 「必要な」JavaScript コードを edit.html.erb に移動します。- Ajax が有効になっている場合は、edit.js.coffee のみを使用して既存の Web ページの更新を処理し、edit.html.erb の js をできるだけ多く使用します。- 残りの共有コードを _niceedit.js.coffee などのパーシャルに入れ、'render :partial=>' を使用してレンダリングします...

慣例に従ってください。後でテスト サービスなどを使用するときに役立ちます。

于 2012-08-17T11:19:19.197 に答える