2017-10-20 7 views
0

ログインフォームを「remote:true」に変更した後、私は奇妙な動作をします。 ログインが成功した後は、別のページにredirect_toを行いました。これは、Javascriptを本体で実行しています。Rails - リダイレクト後にターボリンクが発生する

ビュー特定のコーヒーファイル経由のJavascriptがロードされた
<script> 
writeCookie(); 
</script> 

#= require write_time_zone_cookie 

writeCookie()期待のように動作しますが、私はにログインフォームを変更した後、「リモート:真は」私は後にJSのエラーを取得しますredirect_to。

Uncaught ReferenceError: writeCookie is not defined 
    at HTMLDocument.<anonymous> (<anonymous>:4:11) 
    at HTMLDocument.dispatch (jquery.self-bd7ddd393353a8d2480a622e80342adf488fb6006d667e8b42e4c0073393abee.js?body=1:5227) 
    at HTMLDocument.elemData.handle (jquery.self-bd7ddd393353a8d2480a622e80342adf488fb6006d667e8b42e4c0073393abee.js?body=1:4879) 
    at Object.t.dispatch (turbolinks.self-1d1fddf91adc38ac2045c51f0a3e05ca97d07d24d15a4dcbf705009106489e69.js?body=1:6) 
    at r.t.Controller.r.notifyApplicationAfterPageLoad (turbolinks.self-1d1fddf91adc38ac2045c51f0a3e05ca97d07d24d15a4dcbf705009106489e69.js?body=1:7) 
    at r.t.Controller.r.visitCompleted (turbolinks.self-1d1fddf91adc38ac2045c51f0a3e05ca97d07d24d15a4dcbf705009106489e69.js?body=1:7) 
    at r.t.Visit.r.complete (turbolinks.self-1d1fddf91adc38ac2045c51f0a3e05ca97d07d24d15a4dcbf705009106489e69.js?body=1:6) 
    at r.<anonymous> (turbolinks.self-1d1fddf91adc38ac2045c51f0a3e05ca97d07d24d15a4dcbf705009106489e69.js?body=1:6) 
    at turbolinks.self-1d1fddf91adc38ac2045c51f0a3e05ca97d07d24d15a4dcbf705009106489e69.js?body=1:6 

私のようなウェブから、既にいくつかの提案を試してみました:

$(document).on('turbolinks:load', function() { 
      writeCookie(); 
     }); 

しかし、これは私の問題を解決していません。 誰かがアイデアを持っていますか?

おかげ アレックス

+0

javascriptマニフェストファイル(application.js)全体を投稿できますか? –

+0

@ PatrickO'Grady //ターボリンクが必要です //必要なread_url_params –

答えて

0
Uncaught ReferenceError: writeCookie is not defined 

function writeCookie() {}があなたのjsファイルで定義されていないことを意味します。これを証明するために

は、ちょうどこれはあなたの問題を解決した場合、私は右だ

<script> 
    function writeCookie() { 
     // Your function code hear 
    } 
    writeCookie(); 
</script> 

あなた<script>タグで、次の機能が含まれます。機能がないため、問題はアセットパイプラインに関連しています。

おそらく、文書がロードされたときに、アセットパイプラインがwrite_time_zone_cookieまたはwriteCookie()ファンクションを含むread_url_paramsファイルをロードする前に、HTMLドキュメントでそのスクリプトを実行している可能性があります。

アセットパイプラインにすべてのファイルを含める必要があるため、そのwriteCookie()機能を実行するとファイルがアセットパイプラインに読み込まれているかどうかブラウザの開発者ツールでチェックしてください。ブレークポイントを設定するだけです。

私はもっとあなたを助けますが、私たちに多くの情報を与えることができ、それは限られた情報でより多くのあなたを助けるために、実際には不可能であるあなたはそれが完全に削除turbolinksになってしまった私たちに

enter image description here

0

を与えた(Guide how to do it )。私は、ページリロードとダブルコントローラアクションの実行後に、より多くのJS問題を見ました。それはコンソールの "ログを保存する"に役立ちます:)。その後私が直面した唯一の問題は、AJAXコールのリダイレクトでした。私はApplicationControllerにヘルパーメソッドを追加して解決しました:

def redirect_by_request_type(url) 
    if request.xhr? 
     render js: "window.location='#{url}'" 
    else 
     redirect_to url, status: 303, turbolinks: false 
    end 
    end 
関連する問題