在使用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)
在 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)