如何从rails3自定义视图助手返回干净的javascript?

时间:2010-05-20 12:03:03

标签: javascript ruby-on-rails ruby-on-rails-3 escaping helper

使用Rails 3:在我的update.js.erb文件中,我发现我重复了很多东西。所以我试着把它全部变成一个帮手。但我无法让助手回馈干净的javascript。它将\"放在任何地方而不是

以下是我的开始:

<% if @list.show_today %>
    $("#show_today_check_<%= @list.id %>").removeClass("gray").addClass("orange").attr("value","0");
<% else %>
    $("#show_today_check_<%= @list.id %>").removeClass("orange").addClass("gray").attr("value","1");
<% end %>   

<% if @list.show_inventory %>
    $("#show_inventory_check_<%= @list.id %>").removeClass("gray").addClass("white").attr("value","0");
<% else %>
    $("#show_inventory_check_<%= @list.id %>").removeClass("white").addClass("gray").attr("value","1");
<% end %>

etc.

这是我写的生成上述javascript的帮助器:

def toggelButtonState( object, name, color)

    if object.send(name)
      @add_col = color
      @rem_col = 'gray'
      @value = "0"
    else
      @add_col = 'gray'
      @rem_col = color
      @value = "1"
    end

    js = '$("#'
    js += "#{name}_check_#{@list.id}"
    js += '").removeClass("'
    js +=  @rem_col
    js += '").addClass("'
    js +=  @add_col
    js += '").attr("value","'
    js += @value
    js += '");'

end

我称之为:

<%= toggelButtonState( @list , 'show_today', 'orange' ) %>

以下是我在回复中得到的内容:

 $(\&quot;#show_today_check_2\&quot;).removeClass(\&quot;orange\&quot;).addClass(\&quot;gray\&quot;).attr(\&quot;value\&quot;,\&quot;1\&quot;);

现在我注意到帮助器中直接html存在类似的问题。它不会让我在尖括号中返回东西。但后来我发现了content_tag。 javascript有类似的东西吗?我怎样才能摆脱\&quot;

1 个答案:

答案 0 :(得分:2)

添加

js.html_safe

作为toggelButtonState函数的最后一行