2011-10-25 5 views
0

ajax処理中にコントローラの別の場所にリダイレクトすることはできますか?私はAJAXリクエストを送信することを意味しますが、コントローラでの処理中に、私はajaxリクエストを取り消して全く別の場所にリダイレクトしたいと考えています。私は顧客のフォームでこれを使用しています。これは次のように動作します:誰かが自分のフォーム上でボタンを作成し、フォームの属性をajaxでチェックします。間違っているとエラーを返します。そうでなければ新しい顧客にリダイレクトします。 アイデアajaxでリダイレクトを作成する

+1

標準アクションの使用中は、 – RageZ

+0

また、RageZのように真ん中でページをリフレッシュしたくないと仮定すると、おそらくJavaScriptを使って解決するほうがよいでしょう。ですから、たとえばjQueryによるクライアント側の検証のようなものです。 (http://bassistance.de/jquery-plugins/jquery-plugin-validation/) – jefflunt

+2

あなたは 'window.location = location;'を使用できます。 js.erbファイル内にあります。 – shajin

答えて

0

私が見つけた何かはるかに優れたので、ここであなたがapplication_controllerに追加する必要があるコードです:

def redirect_to(options = {}, response_status = {}) 
    if request.xhr? 
    render(:update) { |page| page.redirect_to(options) } 
    else 
    super(options, response_status) 
    end 
end 

をして、Ruby on Railsをより多くのjavascriptの質問だredirect_to

0

コントローラーからのリダイレクトはできませんが、属性検査の完了後、正常な検査で「成功」を返します。値が成功したかどうかをjqueryで確認できます。

$.post(
    "http://localhost/photo_tool/index.php/photo_tool/login", 
    { 
     username:$('#username').val(), 
     password:$('#password').val() 
    }, 
    function(result){ 
    if(result=='success') 
    { 
     window.location.href = 'Your URL here'; 
     //You can also use window.location.replace("Your URL here"); 
    } 
    else 
    { 
    $('#error').html(result); 
    } 
    }); 

上記の例では、コントローラはログインに成功すると「成功」を返します。

関連する問題