私は私のインデックスに私を取得するためにうまく動作するリダイレクトを持っています。以下のとおりです。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:それは負荷にフォームを送信し
:javascript
document.querySelector('.button.btn.btn-primary.btn-sm').click();
を...しかし:そうのようなファイルの末尾にHAMLの上に、
document.querySelector('.button.btn.btn-primary.btn-sm').click();
を:
私が追加私のインデックスページは何度も何度も再レンダリングされているはずです...ボタンを繰り返しクリックします。それは一度だけではありません。これを単に負荷に結びつける何らかの方法があるのだろうかと思っていました。
UPDATE 2:
だから私は
firstSubmit = function() {
document.querySelector('.button.btn.btn-primary.btn-sm').click();
};
$(document).on('page:load', firstSubmit);
を書いた問題がある...私のページが繰り返し自体をリロードされるようです。それで、それは私のボタンを何度もスパムして、ページ全体の流入をもたらします。とにかくこれを本当にjanky(グローバルなvar?私は憎むだろう)を得ることなく制限する?
ちょっとそこに - 私はこのコードを単純に入れていないし、これまではサイコロを入れていません。しかし、これがどのように起動しようとしているのか尋ねたがっていますdo_not_redirectがフラグ変数として私のボタンに縛られていると、その人がボタンに当たっていないので(理想的には、ボタンを押すことなくロードしたいのであれば)フォームは決して提出しませんか?私たちがここで何をしようとしているのかをもっとよく理解することができれば、私はそれを一緒に得ることができます/私の状況でそれを働かせる方法を見つけ出すことができます。 – PinkElephantsOnParade
'do_not_redirect'フィールドは、ページが読み込まれてからフォームを送信するときに自動的にjavascriptで設定されます。コントローラーはdo_not_redirect POSTパラメーターの存在をチェックし、GETパラメーターでこのフラグを使用してインデックスにリダイレクトします。 javascriptは表示されず、フラグが表示され、フォームは1回だけ送信されます。 – Inpego