IDを持つlink_toフォームヘルパーがあります:
<%= link_to "NEXT", next_wizard_path, :method => :put, :id => 'my-link-check' %>
このリンクで、ページにあるフォームを送信する必要があります (実際には部分的なものですが、レンダリング時にすべてのページが問題になることはありません)。そこで、ヘッダー部分の上部にいくつかの jquery を追加しました。
<script>
$(document).ready(function() {
$('#my-link-check').click(function(event){
var form = document.getElementById("edit_put");
if(form!=null)
form.submit();
//event.preventDefault(); // Prevent link from following its href, dont think we want this
});
});
</script>
奇妙なひねりで、form.submitは実際に機能します。ブレークポイントが設定されたfirebugにいて、特にコードをステップ実行している場合、そうでない場合はコードを実行しますが、送信は実際には機能しません。何が起こっているのか、なぜこのように振る舞うのか、私はとても混乱しています。私はjqueryにまったく精通していないため、jquery呼び出しの使用方法にあると思われます。
これは、提供されているフォームにデータを保存し、 wickedを支援するためのものであることに注意してください。これは、Ruby on Rails のウィザードの宝石です。
また、フォームが ajax 経由でタッチされるたびにデータを非同期的に送信するために、「ウィザード ページ」間でデータを保存することを提案した wicked の作成者にも注意してください。
def update
# save logic here
respond_to do |format|
format.js do
# whatever
end
format.html do
render_wizard
end
end
私には手がかりがありませんが、私たちのビューで form_for を remote => true にしているのでしょうか? それ以上に関与していると思われます。
また、link_to メソッドを put メソッドにしようとしましたが、これはコントローラーで Update アクションを呼び出しましたが、情報が渡されなかったため、フォームの変更が保存されませんでした。良い解決策、明らかに私は間違っていました。