0

私はRailsの初心者です。RAILS で基本的な AJAX 機能を実行するプログラムがあります。リンク TEST をクリックすると、コントローラでテスト パスが実行され、test.js.erb が実行されます。しかし、サーバーログにレンダリングされていることがわかりますが、アラートメッセージは表示されません。

index.html.erb:

<%= link_to 'TEST', test_path, :remote => true %> <br>

テスト アクション:

  def test
    respond_to do |format|
      format.js 
    end
  end

js.erb をテストします。

"alert('Hello Rails');"

サーバーログ:

2013-06-30 11:34:37 -0700 で xxxx の GET "/test" を開始 JS として DefaultController#test で処理
レンダリングされた Default/test.js.erb (0.3ms) 2ms で 200 OK を完了 (ビュー: 2.1ms) | アクティブレコード: 0.0ms)

以下に示すように、コントローラ アクションから直接 js をレンダリングするようにコードを変更すると、アラート メッセージが表示されます。

  def test
     render :js "alert('Hello Rails');"
  end

しかし、jsを別のjsファイルで実行したいです。誰かが私が間違っていること、およびそれを test.js.erb の一部として実行する方法を手伝ってもらえますか?

4

1 に答える 1

1

ジョー・ハーフ・フェイスは正しい、

"alert('Hello Rails');"

次のようにする必要があります。

alert('Hello Rails');

これを引用符で囲むと文字列として取得されるため、実行する JavaScript コードはありません。js ファイル内のすべてが、JavaScript タグ内にあると想像してください。

<script type="text/javascript">
  content of js.erb file
</script>
于 2013-06-30T20:16:24.217 に答える