Your problem is that []
and []=
are in fact different methods. When you type:
@game.board[arg1.to_sym] = :O
ruby reads it as:
@game.board.[]=(arg1.to_sym, :o)
and what you want is
@game.board.[](arg1.to_sym) = :O
To make sure ruby knows what you want do:
(@game.board[arg1.to_sym]) = :O
NOTE:
To be honest I am not sure why you are using Proc here at all, why not simple:
def board
@board_locations
end