Rails - 进入索引,但也提交表单与同样的点击
我有一个重定向工作正常,让我到我的索引。它是如下:Rails - 进入索引,但也提交表单与同样的点击
redirect_to action: :index, filters: { recent_price_change: "#{1.week.ago.strftime('%m/%d/%Y')} - #{Date.today.strftime('%m/%d/%Y')}" }, hide_filters: true
事情是,我在填充点击过滤器。在同一页面上有一个标签为提交操作的按钮。
这里是HAML的摘录(这是八九不离十有点儿像ERB ......不要担心太多就可以了,只要注意它是如何类型:提交)包含它的文件:
%button.btn.btn-primary.btn-sm{ type: 'submit', style: 'background-color: #a38672;' }
%span.glyphicon.glyphicon-play
Update List
点击上面的按钮提交表单,应用过滤器将一些结果放在屏幕上的表格中。
这是/一切都很好 - 但有一个新的要求,我希望提交按钮被“自动点击”重定向。 AKA,我不想手动点击这个按钮......相反,作为重定向的一部分,表单需要提交。所以,当页面加载时,它是如果我刚刚点击了按钮 - 数据填充等。你们都知道这是可能的/我会怎么做?我已经通过redirect_to行动的文档挖掘,希望我能在那里找到一些帮助 - 但是现在还没有骰子。
UPDATE:
我说:
document.querySelector('.button.btn.btn-primary.btn-sm').click();
走上HAML在像这样的文件的末尾:
:javascript
document.querySelector('.button.btn.btn-primary.btn-sm').click();
它提交负载形式......但事实证明,我的索引页面必须反复重新渲染...重复点击按钮。它不会只做一次。想知道是否有某种方法可以将这个绑定到onload上。
更新2:
所以我写了
firstSubmit = function() {
document.querySelector('.button.btn.btn-primary.btn-sm').click();
};
$(document).on('page:load', firstSubmit);
问题是...看来我的网页被反复重装本身。那么,它一遍又一遍地传播我的按钮,导致页面的总流量。无论如何限制这个没有得到真正janky(全球变种? - 我讨厌)?
您可以添加标志变量,以形成(假设表单操作重定向到index
):
= hidden_field_tag :do_not_redirect
%button.btn.btn-primary.btn-sm{ type: 'submit', style: 'background-color: #a38672;' }
%span.glyphicon.glyphicon-play
Update List
然后修改的javascript:
- unless params[:do_not_redirect]
:javascript
$(document).on('page:load', function() {
$('#do_not_redirect').val(1);
$('.button.btn.btn-primary.btn-sm').click();
});
和控制器:
redirect_to action: :index, filters: {
recent_price_change: "#{1.week.ago.strftime('%m/%d/%Y')} - #{Date.today.strftime('%m/%d/%Y')}"
}, hide_filters: true, do_not_redirect: params[:do_not_redirect].presence
我想你想要做的就是利用回调。不确定你是否熟悉,但回调只是在发生其他行为后执行的例程。在这种情况下,当你点击提交按钮(这很可能是after_save或after_commit回调)后,你想重定向到索引。回调通常在这样的情况下,发现在控制器的顶部,类似如下:
class SomeController < ApplicationController
after_save :go_to_index
然后,你的正常控制器操作后:
private
def go_to_index
// Redirect code
end
我想这是你”重新寻找,你可以在这里找到回调API信息:http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html。
嘿,我其实不想按钮被按下。从本质上讲,我希望模拟按钮按钮 - 我希望一按按钮就能在您登陆页面时立即“自动”。 – PinkElephantsOnParade
它不是通向目标网页吗? – DudeMontag
嘿那里 - 所以我有点天真地把这个代码,迄今,没有骰子。但想问一下这是如何调用?如果do_not_redirect作为标志变量绑定到我的按钮,是不是这样,因为人没有按下按钮(理想情况下 - 希望它在没有按下按钮的情况下加载),它永远不会被填充,因此,表单从不提交?我想如果我能更好地理解我们在这里要做的事情,我可以把它们合在一起/弄清楚如何让它在我的情况下运行。 – PinkElephantsOnParade
当页面加载并提交表单时,会自动设置'do_not_redirect'字段;控制器检查是否存在do_not_redirect POST参数,并重定向到在GET参数中使用此标志的索引;当标志出现时,javascript不会出现,并且表单只会提交一次。 – Inpego