2012-01-03 4 views
4

私はちょっと混乱しています。 stackoverflowに関する多くの質問では、特にあなたがこれらの破壊リンクが動作するようにしたい場合は、あなたのjavascriptコードを管理するためにjquery-ujsが必要です。このページですべてのインストール手順を実行すると、私は何もする必要がないと言わなければなりません。 、Railsの中に自動インストールのためにjquery.jsとjquery-ujs.jsの場所と破壊リンクが機能しない理由

「jqueryのレール」宝石を使用します。

私はRailsの3.1を使用しているので、私はこれに従わなければなりません。
gem 'jquery-rails', '>= 1.0.12'
をし、実行:あなたのGemfileでこれを置き$ bundle install
この次のステップでは、Railsののバージョンに依存します。

a。 Railsの3.1ために、あなたのアプリケーション/資産/ JavaScriptの/ application.jsファイルの先頭に次の行を追加します。

//= require jquery 
//= require jquery_ujs 

しかし、Railsの3.1のために、これはすでに新しいレールのアプリを作成した後に行われます。新しい

deprecated You are using Rails 3.1 with the asset pipeline enabled, so this generator is not needed. 
      The necessary files are already in your asset pipeline. 
      Just add `//= require jquery` and `//= require jquery_ujs` to your app/assets/javascripts/application.js 
      If you upgraded your app from Rails 3.0 and still have jquery.js, rails.js, or jquery_ujs.js in your javascripts, be sure to remove them. 
      If you do not want the asset pipeline enabled, you may turn it off in application.rb and re-run this generator. 

さて、何も:私は$ rails generate jquery:installを実行する場合

私は次の出力を取得します。しかし、なぜ私の破壊リンクはまだ機能しません。だから、私は自分自身にこれらのjqueryファイルがどこにあるのか疑問に思う。別のレールバージョン用のjqueryインストール命令を読むと、これらのファイル(jquery.js、jquery-ujs.js)を特定の場所にコピーするよう常に指示されます。 Ruby 3.1ユーザーだけがこれを行う必要はありません。しかし、なぜ?私はこれらのファイルを見つけることができません。それらはjquery-railsの宝石の一部ですか?はいの場合、私の破壊リンクがまだ機能しないのはなぜですか?これは本当にjqueryの問題ですか?私がlink_toからbutton_toにヘルパーを変更すると、それは機能しています。では、jqueryの問題である限り、どのように起こることができますか?私にとっては問題ではないかもしれませんが、私はフォームボタンを使いたくありません。さらに、Railsのようなアプリケーションには、共通の生成されたテンプレートに大きな問題があるとは思えません。

link_toヘルパーを変更せずに、JavaScript(Railscast)から離れることなくこれを修正する方法はありますか?

アップデート1

  • レイアウトファイルがあり<%= javascript_include_tag "application" %>
  • config.assets.enabled = true

アップデートを設定されている2ここで

破壊言及リンクのソース:

通常、投稿を削除する必要がありますが、代わりにブラウザはその投稿の場所をポイントします。 http://domain/posts/2
link_toの代わりにbutton_toでこれを実行すると動作しますが、フォームボタンです。

アップデート3

さて、破壊のリンクはFirefoxで動作しますが、私はGoogle Chromeのユーザーだと私はそれがそこにも仕事をしたいです。これには解決策がありますか?

更新4

クロームInspectorはライン5122上のDOMExceptionを投げる:var ret = matches.call(node, expr);

message: "SYNTAX_ERR: DOM Exception 12"

しかし、このエラーは、それがリンクを破壊したりしませんか、すべてのハイパーリンクで発生します。
破壊リンクはタイプエラーをスローします。 ですが、jquery.jsから来たものか、クローム拡張機能から来たものかは分かりません。 jquery-ujs.jsがエラーをスローし、メッセージは "本当ですか?"でした。これは確認メッセージのためにレールで定義されたテキストです。だから、私はconfirmオプションを削除した後、削除が働いた。

Chromeで確認オプションを使用するにはどうすればよいですか?

+0

レイアウトに '<%= javscript_include_tag"アプリケーション "%>"がありますか? –

+0

はい。ソースには、_jquery.js_と_jquery-ujs.js_という2つの '

4

jquery.jsとjquery_ujs.jsは、アセットパイプラインとjquery-rails gemによって動的に提供されます。それらはもはやあなたのRails 3.1アプリ内のディスクには存在しません。

ブラウザで正しく/assets/jquery.js/assets/jquery_ujs.jsをリクエストすることで、正しく配信されていることを確認できます。 JavaScriptが返され、404/500エラーではないことを確認してください。

+0

これは、私があなたのかなり長くて冗長な投稿で見つけることができる唯一の質問に答えるものです。私たちはおそらく、あなたが実際には "働いていない"以上のことを言っていないので、あなたの破壊リンクがうまくいかない理由をあなたに伝えることはできません。クリックするとどうなりますか?何かJavaScriptエラーが出ますか?サーバー側のエラーはありますか?あなたのログは何を言いますか?私たちがあなたに手を差し伸べる前に、実行する必要のある大量のデバッグステップがあります。 – meagar

+0

ありがとうございます。私はそのパスでファイルを入手しました。なぜ破壊リンクがうまくいかないのかということが分かります。私はそれ以上説明しなかった。なぜなら、すでにstackoverflow上にこれらの質問がたくさんあるからです。私は私の質問を編集します。 – Marc

+0

もちろん、それはレールアプリの中にありません。しかし、それはディスク上に存在します。それはベンダー/アセット/ javascriptsのjquery-rails gemにあります。これは、jqueryコードを指しているエラーメッセージを追跡する必要があるときを知るのに役立ちます。 –

1

はjavascriptのエラーのように見える...あなたのいずれかを実行できます。私たちはそれが動作するまで、それまでに戻ってそれを追加し、あなたのjavascriptのコードをすべて削除

  • を見ることができる場所

    • をHerokuの上でページを公開しますまた

    、(あなたがやっているようにそれはそうのように)あなたは二回jquery.jsとjQuery-ujs.jsが含まれていないことを確認してくださいに失敗します。あなたはjquery.jsとjquery-ujs.jsでスクリプトタグを持っていると言いましたが...そうしないでください。

    代わりに、あなたのアプリケーション/資産/ JavaScriptの/ application.jsは、次のようになります。

    // 
    //= require jquery 
    //= require jquery_ujs 
    //= require_tree . 
    

    これはjqueryの、jquery_ujs、そしてあなたのアプリ/資産/ JavaScriptのフォルダ内のすべてのJavaScriptを追加します。

  • +0

    これは私のアプリ/ assets/javascripts/application.jsなどにあります。 [github](https://github.com/lunij/wpr)から入手できます。組み込みのjquery以外のjavascriptコードはありません。 ChromeとJQueryの間の問題だと思う。しかし、あなた自身で試してみてください。 – Marc

    +0

    @lunijコードをダウンロードしてデバッグするのは、私が人々に課金するものです... herokuのコードをホストし、時間を費やさずにjavascriptを見ることができるリンクを与えるなら、私はそれをします。 –

    +0

    ねえ、そうです。私はそれを英雄に載せます。そのために残念! – Marc

    0

    数週間前に、私はすべてのChrome拡張機能を無効にし、Chromeを再起動してすべて正常に機能しました。この質問を作成した時点で、どのChrome拡張機能を使用していたのか分かりません。私が知っている唯一の事は、JavaScriptコードを拡張して破損させた拡張子が1つあったことです。これが、Chrome Inspectorで表示されるこれらの奇妙なエラーメッセージのすべての理由です。私はそれが本当にどのような特定の拡張機能を持っているのかわかりませんが、普及している広告ブロックまたはポップアップブロック拡張の1つでなければなりません。すべてのChrome拡張機能を無効にして、コードが正常に動作しているかどうかを確認してください。