私は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 テンプレート コードを内部で使用するにはどうすればよいですか? 現時点では、内部の何か<%%>
がトリガーされるようで、この動作は望ましくありません。