【问题标题】:submit_tag with disable_with does not get passed into params hash带有 disable_with 的 submit_tag 不会被传递到 params hash
【发布时间】:2013-12-31 14:46:43
【问题描述】:

在 Rails 中工作 3. 当我做一些非常简单的事情时:

<p><%= submit_tag 'Create' %></p>

在我的操作中,我的参数散列中得到了 commit: Create 键/值对。但是,只要我添加 disable_with:

<p><%= submit_tag 'Create', :disable_with => 'Processing...' %></p>

我没有得到commit 的值。问题是,当我有多个提交按钮时,我希望能够打开提交标签的值。当我设置了:disable_with 时,我似乎无法做到这一点?

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:

    应该是 datat-disable-with。试试这个

    <p><%= submit_tag 'Create', data: {:disable_with => 'Processing...'} %></p>
    

    【讨论】:

    • 我正在使用 rails 3,而不是 rails 4。这不会更改生成的 html。
    • 此外,问题不在于 disable_with 不起作用,它正确地禁用了按钮。问题是当我这样做时它没有提交按钮值。
    【解决方案2】:

    是的,你是对的,:disable_with 这个属性的值将用作禁用提交按钮的值,而不是最初在submit_tag 中设置的值。

    以下摘自 submit_tag 文档:

    :disable_with - 此参数的值将用作 提交表单时提交按钮的禁用版本。 此功能由不显眼的 JavaScript 驱动程序提供。

    【讨论】:

    • 问题是,它根本没有在我的参数哈希中设置。没有键/值对。
    • 如果您在params 哈希中没有看到这个key/value,那么它可能与jquery_ujs 有关。作为调试步骤,还请通过浏览器的开发人员工具(chrome 中的网络选项卡)检查您的请求。
    • 我没有使用 jquery,我使用的是原型,我发现(在编辑中发布)的原因是,由于按钮被禁用,它没有被提交。
    【解决方案3】:

    在这里发布以防将来有人需要它:

    该按钮未与表单的其余部分一起提交,因为它已被禁用。 (诚​​然,这应该很明显。)我的解决方案是创建一个hidden_field_tag,在提交表单之前使用 javascript 进行更新,但感觉有点不雅。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-18
      • 2013-02-20
      • 1970-01-01
      • 2017-02-14
      相关资源
      最近更新 更多