js.erb变量不能在rails AJAX调用中工作

时间:2013-05-21 19:21:01

标签: javascript ruby-on-rails ajax erb

我正在使用移动操作在我的rails应用程序中进行AJAX调用。控制器操作如下:

def move
    @game = Game.find_by_id(params[:game])
    @player_square = params[:square].to_i
    @game.move(@player_square, :player)
    @ai_square = GameKeeper.ai_move(@game)
    @game.move(@ai_square, :ai) unless @game.squares.compact.count == 9
    @winner = GameKeeper.winner(@game) || "" # need to convert nil to an empty string because javascript recognizes null, not nil

end

我的move.js.erb包含:

var ai_square = $("#square_<%= @ai_square %>");
ai_square.after("X");
ai_square.remove();
var player_square = $("#square_<%= @player_square %>");
player_square.after("O");
player_square.remove();

if(<%= @winner %>) {
     $('#winner').slideToggle("slow");
}

如果我在javascript中注释掉if块,则其他代码正常工作,但如果if保持不变,则无论@winner是否真实,js都不会执行。可能出现什么问题?

解决方案

所以无论出于什么原因,如果你用一个erb if块来切换js if块,就像这样

<% if @winner %>
    $("#winner").slideToggle("slow");
<% end %>

一切正常!很高兴知道为什么原始版本不起作用,但如果其他人有同样的问题,这里有一个解决方案。

0 个答案:

没有答案
相关问题