我是非常新的HTML和基本的理解,不能使用Java查询或JavaScript。我试图让玩家选择填写玩家2名称字段来玩朋友或留空以在摇滚,纸张,剪刀的基本游戏中玩电脑。我希望如果该字段留空,那么param将不会传递任何内容,并且默认值将在我的Player类中设置。
HTML:
<form id="name_form" action="/name" method="post">
<label for="name" id="name_label">Enter Player Name:</label>
<input type="text" id="player_name" name="name" >
<label for "name" id="name_label"> Second Player Name:</label>
<input type="text" id="player_name" name="name2" >
<input type="submit" value="Play!" id="play_button";>
</form>
红宝石:
class Player
attr_reader :name
def initialize name = "Computer"
@name = name
end
end
控制器:
post '/name' do
player = Player.new params[:name]
player2 = Player.new params[:name2]
@game = Game.create player, player2
redirect '/play'
end
我希望像上面这样的东西可行,但我不能这样做。我错过了什么吗?我宁愿不使用javascript。感谢
答案 0 :(得分:0)
params[:name]
和params[:name2]
有一个空字符串""
作为值。所以,你实际上是将一个空字符串传递给你的构造函数。那是&#34;默认值&#34;未使用。如果要使用默认值,则必须省略一个参数,如下所示:
Player.new
# => #<Player:0x007f9c5116b698 @name="Computer">
另外,请注意,传递nil仍然意味着您传递的值为nil
并且默认值不会被提取
Player.new
# => #<Player:0x007f9c5116b698 @name=nil>
这就是您需要将代码更新为此的原因:
class Player
attr_reader :name
def initialize name
@name = name.empty? ? "Computer" : name
end
end