我是 html 的新手,有基本的了解,还不能使用 java 查询或 javascript。我正在尝试让玩家选择填写玩家 2 名称字段以玩 friend 或将其留空以在石头剪刀布的基本游戏中玩计算机。我希望如果该字段留空,则参数将不传递任何内容,并且将在我的玩家类中设置默认值。
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>
ruby :
class Player
attr_reader :name
def initialize name = "Computer"
@name = name
end
end
Controller :
post '/name' do
player = Player.new params[:name]
player2 = Player.new params[:name2]
@game = Game.create player, player2
redirect '/play'
end
我希望像上面这样的东西能奏效,但我做不到。我错过了什么吗?我宁愿不使用 javascript。谢谢
最佳答案
params[:name]
和 params[:name2]
有一个空字符串 ""
作为值。所以,你实际上是将一个空字符串传递给你的构造函数。那就是不使用“默认值”。如果你想使用默认值,那么你必须省略一个参数,像这样:
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
关于html - 将默认值设置为 html 中的空白表单。(Ruby、Sinatra、CSS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36970679/