0

私はPrivatePubを使用していますが、ここで奇妙な動作が発生しています。1.9.3詳細を説明する前に、Rubyと Railsを使用していることに注意してください3.2.2

私が持っているとしましょうTestsController

class TestsController < ApplicationController
  def index
  end

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

そしてtests/index.html.erb

<h1>Test</h1>

<%= content_for :footer do %>
  <%= subscribe_to tests_path  %>
<% end %>

そしてtests/create.js.erb

<% publish_to tests_path do %>
  alert("Working fine");

  if (false) {alert("This never run");};

  if (false) {<% puts "*"*100 %>};

<% end %>

シンプルでわかりやすい。今私の問題は、createアクションを実行するたびに、何らかの理由<% puts "*"*100 %>で常に実行されることです(if(false)ステートメントを作成した場合でも)。

ルビーifを使用するだけで、次のように正常に動作するはずです。

  <% if false %>
    <% puts "*"*100 %>
  <% end %>

しかし、まだいくつかのクライアント側の検証を行いたいです (たとえば、div が存在することを確認し、それに応じていくつかのパーシャルをレンダリングするなど)。

if ($("#chat").length){
  $("#chat").append("<%= j render(@messages) %>");
}

しかし<%= j render(@messages) %>、常にレンダリングされるようです。

この問題に取り組み、クライアント側の if ステートメントと ruby​​ テンプレート コードを内部で使用するにはどうすればよいですか? 現時点では、内部の何か<%%>がトリガーされるようで、この動作は望ましくありません。

4

1 に答える 1