我是在Rails 5中创建国际象棋应用程序的团队的一员。我有一个名为“chess_pieces.rb”的控制器。在那里,我有以下代码:
def update
@piece = ChessPiece.find(params[:id])
@game = Game.find_by_id(@piece.game_id)
@move = @piece.moves.all
@piece.update_attributes(pieces_params)
if @piece.valid?
redirect_to game_path(@game)
else
render :edit, status: :unprocessable_entity
end
update_moves
end
def update_moves
puts "The piece has been updated!"
@piece = ChessPiece.find(params[:id])
@piece.moves.update(count: 19991)
@piece.save
puts @piece.moves.count
end
正如您所见,update
方法是在移动时更新一块,特别是棋盘上的x_position和y_position。现在,如何使方法update_moves
更新与chess_piece.rb模型关联的名为moves
的表的属性。我在电路板上的一个位置更新后,在update
方法中调用此方法。
我想更新这件作品的动作次数+其他一些东西。
我的路线如下:
Rails.application.routes.draw do
devise_for :users
# For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
root 'games#home'
resources :games do
resources :pieces, only: [:show, :update]
patch 'update_moves', on: :member
end
end
答案 0 :(得分:0)
关系是(件has_many移动)?
如果是这样,我认为你不能用@piece.moves.update(count: 19991)
更新一件作品的所有动作。您应该使用迭代或地图单独更新它们。
注意:如果您尝试向该片段添加新的移动记录,则应使用@piece.moves.build(count: 19991)
如果关系是一对一,那么您应该尝试将@piece.moves.update(count: 19991)
替换为@piece.moves.count = 19991
?