【发布时间】:2012-08-28 00:11:39
【问题描述】:
我有一个<select> 列表。其中,用户无权访问某些选项(用户可以看到这些选项但不能选择它们)。
Ruby on Rails 中是否有任何帮助程序可以做到这一点?
【问题讨论】:
-
请提供完整的细节以及您为实现这一目标做了哪些工作?/
标签: jquery html ruby-on-rails select
我有一个<select> 列表。其中,用户无权访问某些选项(用户可以看到这些选项但不能选择它们)。
Ruby on Rails 中是否有任何帮助程序可以做到这一点?
【问题讨论】:
标签: jquery html ruby-on-rails select
通常,您可能会使用 select 助手。
在这种情况下,这个:
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>
【讨论】:
手动构造选项并设置禁用属性
<option disabled="disabled"></option> 并尝试禁用选项
【讨论】:
试试这个
<%= f.select :action_item_status, action_item_status, {}, {:disabled => true} %>
【讨论】: