小编Pat*_*ady的帖子

如何在远程表单上禁用提交按钮,直到加载下一页

在使用Turbolinks的Rails 5.1应用程序中,我data-disable-with在我的提交按钮中添加了一个属性,因此在单击时,该按钮将被禁用,以防止意外多次提交数据.这在许多情况下都很有用.

问题是,在使用内置的UJS帮助程序(data-remote=true)通过AJAX提交的表单上,单击提交按钮时,它不会保持禁用状态.它最初被禁用,但在下一页加载之前会快速重新启用.这违背了data-disable-with行为的要点,因为它使意外的表格重新提交.

有没有办法在加载新页面之前保持表单按钮被禁用?

这是表格:

<%= simple_form_for(
  resource,
  as: resource_name,
  url: session_path(resource_name),
  html: { class: "large", autocomplete: "on" },
  remote: true
) do |f| %>
  <%= f.input(
    :email,
    placeholder: "Email address",
    label: false,
    autofocus: true
  ) %>
  <%= f.input(:password, placeholder: "Password", label: false) %>
  <%= f.button(
    :submit,
    "Sign in",
    class: "ui fluid large teal submit button",
    "data-disable-with": "Signing in..."
  ) %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

这是发生了什么. 单击时正确禁用提交按钮的示例,但在加载新页面之前重新启用

javascript ruby-on-rails ujs turbolinks

7
推荐指数
1
解决办法
2049
查看次数

无法在 Rails 中创建具有带前导点的段的路由(以验证 Let's Encrypt)

在 Heroku 上的 Rails 5 应用程序中,我正在尝试为此 URL 创建路由:http://beta.example.com/.well-known/acme-challenge/some-key,以便我可以验证我的服务器让我们加密以获取 SSL 证书。但是我无法让路线在路线的任何部分使用前导点或句点,它只返回 404 Not Found。

换句话说,开头的点是把.well-known事情搞砸了。我可以得到一条没有点的工作路线,或者如果点在其他地方(例如well.known),但如果点是段中的第一个字符,则它不起作用。

我从这个开始:

get "/.well-known/acme-challenge/:id" => "pages#letsencrypt"
Run Code Online (Sandbox Code Playgroud)

当那不起作用时,我尝试使用(动态段):

get ':letsencrypt_route/acme-challenge/:id', to: "pages#letsencrypt", letsencrypt_route: /[^\/]+/
Run Code Online (Sandbox Code Playgroud)

这将允许在段中的任何地方都有一个点......除了第一个字符,这是我需要的地方。

知道是什么原因造成的吗?当我尝试导航到在一个段中有一个前导点的 URL 时,它甚至没有在我的日志中显示任何内容,它只是一个直接的 404。

我已经看到有些人在 Rails 4 和 Rails 5 上都有这个问题,我使用 Thin 或 Puma,在开发和生产中都发生了这个问题。我也试过使用几个letsencrypt gem,但它在同一点上停滞不前。

这是我的 Gemfile,其中包含两种环境中的 gem:

source "https://rubygems.org"

ruby "2.3.1"

gem "rails", "5.0.0.1"

gem "pg", "0.18.4" # postgresql database
gem "twitter-bootstrap-rails", "~> 3.2.2"

gem "active_median", "~> 0.1.0" # used with chartkick for graph …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails heroku rails-routing lets-encrypt

5
推荐指数
1
解决办法
840
查看次数