【问题标题】:Rails disabled option in form helper表单助手中的 Rails 禁用选项
【发布时间】:2016-04-19 10:24:54
【问题描述】:

我正在做一个可以在特定情况下禁用的集合选择。 但是当我禁用该表单内容时,我仍然从选择中选择一个值,这样即使它被禁用,我也可以提交带有该字段值的表单。

事实上,当表单没有被禁用并且用户必须选择一些东西时,它会将用户输入的值发送到 rails 服务器。但是当它被禁用并且用户无法选择时,它仍然应该将我选择的默认值发送到服务器,但是它发送 nil。

这是 HAML 中的 collection_select:

= f.collection_select :billing, Task.billings.keys, :to_s, :humanize,
{ selected: ( "inherit" if @parent_task_id )  },
{ class: "form-control #{(Task.find(@parent_task_id).billing != "unspecified") if !@parent_task_id.nil?}",
disabled: ( (Task.find(@parent_task_id).billing != "unspecified") if !@parent_task_id.nil? ) }

当我查看浏览器中的元素时(在禁用的情况下),它说选择了“继承”。

这是一个经典的 Rails 规则,当表单内容被禁用时,它不会获取它的值并将 nil 作为参数发送到服务器?

感谢您的帮助! :)

【问题讨论】:

    标签: ruby-on-rails forms


    【解决方案1】:

    这是根据 html 规范的预期行为。在您的控制器中,您可以检查 params 哈希中是否存在计费键,并相应地将其设置为您的值。

    【讨论】:

    • 感谢您提供的信息和您的解决方案。我非常专注于视图方面,以至于我完全忘记了我可以在控制器中做到这一点。非常感谢 !祝你有美好的一天:)
    • 很高兴我能提供帮助。你也是!请您将我的答案标记为“已接受”,我正在尝试获得下一个特权:),谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-10
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 2011-05-07
    相关资源
    最近更新 更多