2011-03-22 27 views
0

我有一个通过ajax更新的向上/向下投票机制。原来,在我看来,代码以显示计票结果为:<p id='votes'><%= pluralize video.vote_sum, 'Vote' %></p>,在我create.js.erb文件中的代码是:$('selector').html("<p id='votes'><%= escape_javascript pluralize(@video.vote_sum, 'Vote') %></p>");从js.erb文件维护CSS样式,使用ajax更新页面

但是,我意识到,我想有从<%= pluralize video.vote_sum, 'Vote' %>产生许多不同的CSS样式比“投票”或“投票”的文本要多。这需要我将视图代码更改为:

<p id='votes'> 
    <%= video.vote_sum %> 
    <div class="vote_text"> 
    <% word = "Vote" %> 
    <% if video.vote_sum != 1 %> 
     <%= word.pluralize %> 
    <% else %> 
     <%= word %> 
    <% end %> 
    </div> 
</p> 

它工作正常。但是,当我将JS代码更改为:

$('selector').html("<p id='votes'> 
    <%= video.vote_sum %> 
    <div class="vote_text"> 
    <% word = "Vote" %> 
    <% if video.vote_sum != 1 %> 
     <%= word.pluralize %> 
    <% else %> 
     <%= word %> 
    <% end %> 
    </div> 
</p>"); 

投票显示停止更新。现在投票的作品和所有,因为当我刷新页面时,它显示正确的投票计数与正确的样式。但是,阿贾克斯已停止工作。我怎样才能解决这个问题?

回答

1

您在该JavaScript字符串中有未转义的引号。而且,JavaScript中的多行字符串需要一些特殊的标记 - 每个非终止行末尾的\

修正:

$('selector').html("<p id='votes'> \ 
    <%= video.vote_sum %> \ 
    <div class=\"vote_text\"> \ 
    <% word = "Vote" %> \ 
    <% if video.vote_sum != 1 %> \ 
     <%= word.pluralize %> \ 
    <% else %> \ 
     <%= word %> \ 
    <% end %> \ 
    </div> \ 
</p>"); 
+0

感谢,但它仍然不是工作:/ – 2011-03-22 01:48:15

+0

哦,我错过了一些东西! JavaScript中的多行字符串需要转义。我会更新代码。 (déjàvu much?:P) – 2011-03-22 01:50:21

+0

lol仍然不起作用 – 2011-03-22 01:54:01

0
$('selector').html("<p id='votes'> "+ 
"<%= video.vote_sum %> "+ 
    "<div class=\"vote_text\"> "+ 
    "<% word = "Vote" %> "+ 
     "<% if video.vote_sum != 1 %> "+ 
      "<%= word.pluralize %> "+ 
     "<% else %> "+ 
      "<%= word %> "+ 
     "<% end %> "+ 
    "</div> "+ 
"</p>"); 

我得到这个解决这样...它工作正常,如果你使用JS型加入

希望这有助于