【问题标题】:How to disable some of the options in a select?如何禁用选择中的某些选项?
【发布时间】:2012-08-28 00:11:39
【问题描述】:

我有一个<select> 列表。其中,用户无权访问某些选项(用户可以看到这些选项但不能选择它们)。

Ruby on Rails 中是否有任何帮助程序可以做到这一点?

【问题讨论】:

  • 请提供完整的细节以及您为实现这一目标做了哪些工作?/

标签: jquery html ruby-on-rails select


【解决方案1】:

通常,您可能会使用 select 助手。

参考:api.rubyonrails.org

在这种情况下,这个:

select("post", "category", Post::CATEGORIES, {:disabled => 'restricted'})

可能变成:

<select name="post[category]">
  <option></option>
  <option>joke</option>
  <option>poem</option>
  <option disabled="disabled">restricted</option>
</select>

除了提供一组禁用的选项,使用collection_select 方法,您还可以提供一个 Proc:

collection_select(:post, :category_id, Category.all, :id, :name, \
                  {:disabled => lambda{|category| category.archived? }})

如果方法归档时“2008 年的东西”和“圣诞节”类别返回 true?被调用,这将返回:

<select name="post[category_id]">
  <option value="1" disabled="disabled">2008 stuff</option>
  <option value="2" disabled="disabled">Christmas</option>
  <option value="3">Jokes</option>
  <option value="4">Poems</option>
</select>

您还可以在options_for_select 方法的选项哈希中提供一组禁用的选项。参考:apidock.com

一系列禁用选项的示例

options_for_select(["Free", "Basic", "Advanced", "Super Platinum"], \
                   :disabled => ["Advanced", "Super Platinum"])

给予:

<option value="Free">Free</option>
<option value="Basic">Basic</option>
<option value="Advanced" disabled="disabled">Advanced</option>
<option value="Super Platinum" disabled="disabled">Super Platinum</option>

【讨论】:

    【解决方案2】:

    手动构造选项并设置禁用属性 &lt;option disabled="disabled"&gt;&lt;/option&gt; 并尝试禁用选项

    【讨论】:

      【解决方案3】:

      试试这个

      <%= f.select :action_item_status, action_item_status, {}, {:disabled => true} %>
      

      【讨论】:

      • 这将禁用整个选择列表
      猜你喜欢
      • 2015-05-12
      • 2018-02-11
      • 1970-01-01
      • 2016-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多