Ruby on rails 在更新操作中实现captue逻辑方法
我目前正在开发一个国际象棋应用程序,我正试图找出如何实现移动到!方法,该方法执行捕获逻辑,以在控制器上的更新操作中发生。我遇到的问题是,我甚至不知道如何调用该方法。我需要在控制器或..中重写整个更新操作吗 以下是更新操作:Ruby on rails 在更新操作中实现captue逻辑方法,ruby-on-rails,ruby,Ruby On Rails,Ruby,我目前正在开发一个国际象棋应用程序,我正试图找出如何实现移动到!方法,该方法执行捕获逻辑,以在控制器上的更新操作中发生。我遇到的问题是,我甚至不知道如何调用该方法。我需要在控制器或..中重写整个更新操作吗 以下是更新操作: def update @highlighted_piece = Piece.find(params[:id]) @game = @highlighted_piece.game @x_pos = params[:piece][:x_position] @y_p
def update
@highlighted_piece = Piece.find(params[:id])
@game = @highlighted_piece.game
@x_pos = params[:piece][:x_position]
@y_pos = params[:piece][:y_position]
@highlighted_piece.update_attributes({ x_position: @x_pos, y_position: @y_pos})
redirect_to @game
end
以下是捕获逻辑:
捕获逻辑
我想我可以打电话给move_to!在我的@highlighted_作品中,但它似乎没有任何作用。
移动到如果将其作为工件
类的实例方法放置,则code>应该可以工作
但是我发现错误的是else
部分到if-Piece.where(x_u…
使其忽略空插槽的移动。我的意思是说,在new_x和new_y没有放置工件,那么您应该能够将工件移动到空位置,对吗?但是其他部分只会使它看起来好像什么都没有发生。这应该是原因。就是这样。我不敢相信我没有注意到这一点t、 当我真的捕捉到一个片段时,它就起作用了,但当我像你说的那样移动到一个空的正方形时,它就不起作用了。谢谢你。好吧,移动到回答。实际上我先输入了答案。但我只是想通过评论来确认它,因为我想也许你真的计划让它像那样移动(捕捉逻辑呵呵)。
def move_to!(new_x, new_y)
if Piece.where(x_position: new_x, y_position: new_y).exists?
newpiece = Piece.find_by(x_position: new_x, y_position: new_y)
if self.color != newpiece.color
#perform capture
newpiece.update_attributes(:x_position => nil, :y_position => nil)
else
return false
end
else
return false
end
if self.update_attributes(:x_position => new_x, :y_position => new_y)
@has_moved = true
end
end