我目前正在开发一个国际象棋应用程序,我正在努力弄清楚如何实现move_to!方法,该方法执行捕获逻辑,以便在控制器上的更新操作中发生。我遇到的问题是,我不确定如何甚至调用该方法。我需要重写整个更新动作在控制器或…?
下面是更新操作:
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
下面是捕获逻辑:
<标题>捕捉逻辑h1> 想我可以直接调用move_to!在我的@highlighted_piece上,但它似乎没有做任何事情。 标题>move_to!
应该工作,如果你把它作为Piece
类的实例方法。
但是我发现错误的是else
部分到if Piece.where(x_ ...
使它忽略空槽的移动。我的意思是说在new_x和new_y处没有棋子,那么你应该能够将棋子移动到空位置,对吧?但else
部分只是让它看起来什么都没发生。这应该是原因。