2

我想在 Rails 中禁用 HTML DropDown,我找到了这个解决方案: how to disable the entire dropdown control in html

所以,我有这个:

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

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

编辑:
这是我的情况:
我有一个带有 atext_field和一个select字段的表单。有两种情况:

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

有谁知道如何解决这个问题?

4

2 回答 2

3

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

假设设置了一些变量和诸如此类的东西来帮助决定是否应该禁用选择字段:

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

显然,这可以根据您的需要进行更改,但基本思想就在那里。如果您已经选择了一个类别并希望禁用选择字段,请创建一个隐藏字段。如果您没有选择类别,请省略隐藏字段并允许用户使用选择字段。

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

于 2012-07-31T18:47:57.250 回答
0

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

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

然后以你的形式

:selected => params[:category], :disabled => params[:disabled]
于 2012-07-31T18:12:42.233 回答