我有一个重定向,可以让我进入我的索引。它在下面:
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动作的文档,希望我能在那里找到一些帮助 - 但是还没有骰子。
更新:
我补充说:
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(全局var? - 我讨厌)?
答案 0 :(得分:2)
您可以将flag变量添加到表单中(假设表单操作重定向到...
opt = tf.train.GradientDescentOptimizer(learn_rate)
# get all trainable variables
t_vars = tf.trainable_variables()
# create a copy of all trainable variables with `0` as initial values
accum_tvars = [tf.Variable(tf.zeros_like(tv.initialized_value()),trainable=False) for t_var in t_vars]
# create a op to initialize all accums vars
zero_ops = [tv.assign(tf.zeros_like(tv)) for tv in accum_tvars]
# compute gradients for a batch
batch_grads_vars = opt.compute_gradients(loss, t_vars)
# collect the batch gradient into accumulated vars
accum_ops = [accum_tvars[i].assign_add(batch_grad_var[0]) for i, batch_grad_var in enumerate(batch_grads_vars)]
# apply accums gradients
train_step = opt.apply_gradients([(accum_tvars[i], batch_grad_var[1]) for i, batch_grad_var in enumerate(batch_grads_vars)])
# train_step = opt.apply_gradients(zip(accum_tvars, zip(*batch_grads_vars)[1])
while True:
# initialize the accumulated gards
sess.run(zero_ops)
# number of batches for gradient accumulation
n_batches = 3
for i in xrange(n_batches):
sess.run(accum_ops, feed_dict={X: x_init[:, i]})
sess.run(train_step)
):
index
然后修改javascript:
= hidden_field_tag :do_not_redirect
%button.btn.btn-primary.btn-sm{ type: 'submit', style: 'background-color: #a38672;' }
%span.glyphicon.glyphicon-play
Update List
和控制器:
- unless params[:do_not_redirect]
:javascript
$(document).on('page:load', function () {
$('#do_not_redirect').val(1);
$('.button.btn.btn-primary.btn-sm').click();
});
答案 1 :(得分:0)
我认为你想要做的就是利用回调。不确定您是否熟悉,但回调只是您在执行其他一些操作后运行的例程。在这种情况下,单击提交按钮(很可能是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。