【问题标题】:Disable DropDown in Rails在 Rails 中禁用下拉菜单
【发布时间】:2012-07-29 10:52:35
【问题描述】:

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

所以,我有这个:

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

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

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

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

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

【问题讨论】:

  • 您希望在 params 集合中显示什么?你想要一个默认值吗?
  • 禁用的表单元素不会通过表单提交来提交它们的值。看看这个问答:stackoverflow.com/questions/1191113/…

标签: html ruby-on-rails


【解决方案1】:

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

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

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

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

link I posted所示,这可能是绕过这个限制的最简单方法,无需在表单提交后使用Javascript来玩参数。

【讨论】:

    【解决方案2】:

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

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

    然后在你的表单中

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-29
      • 1970-01-01
      相关资源
      最近更新 更多