我想要一个这样的结果:
Execute "blnResponse_Request = fnExcQuery(strUser, strPwd, strQuery_" & strServiceName & ")"
使用以下代码我最终只能得到:
<select dir="rtl">
<option selected disabled>Choose a car</option>
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
<option value="mercedes">Mercedes</option>
<option value="audi">Audi</option>
</select>
=&GT;
<%= f.select(:car, xxxxxx, {:include_blank => 'Choose a car', :disabled => 'Choose a car'}) %>
第一个选项未被禁用...
答案 0 :(得分:9)
Ito A的答案在Rails 4.2中不起作用(不确定早期版本)。 来自documentation ...
:disabled - 可以是单个值或将在最终输出中禁用选项的值数组。
因此,应为:disabled
选项指定一个与集合中某个选项的值匹配的值。因此,:disabled => 'volvo'
会禁用value='volvo'
选项。但是,它与include_blank选项不匹配,因为该选项不是传递给select方法的集合的一部分。
Rails select helper不直接支持所需的行为。但是,您可以通过向集合添加空白选项来解决此问题,如下所示。
创建集合,然后为其添加空白选项。
car_names = %w(volvo saab mercedes audi)
car_names_with_blank = car_names.map{|c| [c, c]}.prepend(['Choose a car', nil])
在视图中:
<%= f.select(:name, car_names_with_blank, {disabled: '', selected: ''}) %>
这是一个带有工作示例的Github存储库的link。该例子还表明,Ito A的答案以及对类似SO问题的其他答案都不起作用。
更新:我已用解决方案和其他信息更新了我的答案。
答案 1 :(得分:1)
我相信你要找的是:
<%= f.select(:car, xxxxxx, {:include_blank => 'Choose a car', :disabled => 1}) %>
答案 2 :(得分:1)
我相信他们在Rails 6中添加了功能。
来自pull request:
启用选择标记助手将prompt
字段的selected
选项标记为disabled
和/或required
。示例:
select :post,
:category,
["lifestyle", "programming", "spiritual"],
{ selected: "", disabled: "", prompt: "Choose one" },
{ required: true }
占位符选项将被选择并禁用。产生的HTML:
<select required="required" name="post[category]" id="post_category">
<option disabled="disabled" selected="selected" value="">Choose one</option>
<option value="lifestyle">lifestyle</option>
<option value="programming">programming</option>
<option value="spiritual">spiritual</option>
</select>
答案 3 :(得分:0)
以下解决方案的应用如下。
创建应用程序帮助程序函数
def build_selections(prompt: "Select One", selections: {})
selections.reverse!.push([prompt, nil]).reverse!
end
然后在您的视图中使用它:
<%= f.select :category_id, build_selections(prompt: 'Select Category',
selections: @category.collect{|x| [x.name, x.id]}),
disabled: '' %>