我正在使用PrivatePub,我在这里遇到了一些奇怪的行为。在详细介绍之前,请注意我使用的是 Ruby1.9.3
和 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) 语句)。
我知道我可以只使用 ruby if
,然后应该可以正常工作,例如:
<% if false %>
<% puts "*"*100 %>
<% end %>
但我仍然想做一些客户端验证(例如检查 div 是否存在,然后相应地渲染一些部分),例如:
if ($("#chat").length){
$("#chat").append("<%= j render(@messages) %>");
}
但似乎<%= j render(@messages) %>
会一直呈现。
我该如何解决这个问题并在里面使用客户端 if 语句和 ruby 模板代码?目前看来里面的任何东西<%%>
都会被触发,我不想要这种行为。