1

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 アクションを呼び出しましたが、情報が渡されなかったため、フォームの変更が保存されませんでした。良い解決策、明らかに私は間違っていました。

4

2 に答える 2

1

なぜ行をコメントアウトしたevent.preventDefault();のですか?idのリンクはmy-link-check実際のアドレスにつながっていますか?

ブラウザがページを変更 (またはリロード) したようで、スクリプトの実行が終了しました。ブレークポイントを使用すると、すべてがうまくいきます。

コメントを外すevent.preventDefault();か、return false;後に配置してみてくださいform.submit();

于 2012-11-27T18:41:27.613 に答える
0

jQuery は jQuery オブジェクトでのみ機能すると思わsubmitれるため、次のようにする必要があります。

$(document).ready(function() {
    $('#my-link-check').click(function(event){
    var form = $("#edit_put");
    if(form!=null)
        $(form).submit();
    });
}); 
于 2012-11-27T16:53:36.383 に答える