我想从下拉列表中选择一个选项,但它会出现以下错误,即使我可以手动选择它:
尝试选择禁用选项:-1
irb#1(main):078:0> select "S", :match => :first, :from => "level2"
Attempt to select disabled option: -1
=> nil
irb#1(main):079:0> select "M", :match => :first, :from => "level2"
=> nil
这个错误是针对每个选项[1]给出的,而选项[0]是下拉标签,对于这种情况,“S”不可选,但“M”是其他选项。
<div id="sizeDiv">
<select class="form-control tooltip_sizes" id="level2" level="2" name="size" data-msg-required="Beden seçimi yapınız" data-rule-required="true">
<option value="-1" level="2" selected="selected" disabled="disabled">Beden Seçenekleri</option>
<option class="s" level="2" value="31884" available="1">S</option>
<option class="m" level="2" value="31894" available="1">M</option>
<option class="l" level="2" value="31893" available="1">L</option>
<option class="xl" level="2" value="31945" available="1">XL</option>
</select>
</div>
我的问题是为什么我无法选择选项[1]以及如何选择它?
答案 0 :(得分:1)
因为您正在使用:match =&gt; :首先,默认情况下子字符串匹配是可接受的,您的选择“S”匹配“Seçenekleri”中的子字符串,尝试选择禁用的选择中的第一个选项,从而返回错误。你有几个选择来获得你想要的东西 - 删除:match =&gt; :你的电话中的第一个选项(为什么你想要匹配:首先在这个发现中?)然后将返回到默认值:smart,它首先尝试完全匹配,如果没有则将进行子串匹配。否则你可以添加exact:true选项,它将查找限制为完全匹配