禁用Rails中的DropDown



我想在Rails中禁用HTML DropDown,我找到了这个解决方案:如何禁用html 中的整个下拉控件

所以,我有这个:

f.select( ...., :disabled => true)

但是,问题是,当DropDown被禁用时,它不会显示在params集合中。

编辑:
这就是我的处境:
我有一个带有text_fieldselect字段的表单。有两种情况:

  • 用户直接创建一个新项目。如果是,她将从选择字段中选择一个类别
  • 从类别页面重定向后,用户将创建一个新项目。在这种情况下,选择字段被设置为类别的值,并且应该被禁用

有人知道怎么解决这个问题吗?

正如我在原始问题中的评论中所提到的,在表单提交的params中不会出现禁用的表单元素值。若要解决此问题,请尝试使用隐藏字段来保存并提交所需的值。

假设设置了一些变量和其他什么来帮助决定是否应该禁用选择字段:

# ...
f.select(..., :disabled => @category_already_chosen)
f.hidden_field(...) if @category_already_chosen
# ...

很明显,这可以根据您的需要进行更改,但基本思想是存在的。如果您已经选择了一个类别,并且希望禁用选择字段,请创建一个隐藏字段。如果尚未选择类别,请省略隐藏字段,并允许用户使用选择字段。

正如我发布的链接所示,这可能是绕过这一限制的最简单方法,而无需在表单提交后使用Javascript来处理参数。

我会将查询字符串参数添加到您的重定向调用中

redirect_to :action => form_path, :category => :whatever_category_they_came_from, :disabled => true

然后以你的形式

:selected => params[:category], :disabled => params[:disabled]

最新更新