13

私はレールを使用していますが、すべての Javascript を控えめに jQuery を使用して実行していapplication.jsます。

残念ながら、これにより URL を参照することが非常に難しくなります。たとえば、フィールドにオートコンプリートの動作を与えたい場合application.js、レールurl_forが利用できないため、オートコンプリート URL をハードコーディングする必要があります。

application.jserbを使用することは可能ですか?私はこれについて間違った方法で考えていますか?

4

4 に答える 4

6

バリデーターを通過しない可能性のあるマークアップを気にしない場合は、フォームまたはフォーム フィールドの属性に URL を追加し、jQuery でその属性を取得できます。

Rails 3.0 は、HTML5 カスタム データ属性を使用する JavaScript ヘルパーでこのルートをたどっているようです: DHH @ Railsconf 09

于 2009-05-15T23:55:55.633 に答える
2

しないapplication.js.erbでください。キャッシングが関係していても、それは良い習慣ではありません。オートコンプリート エンドポイント (データを取得する URL) をフォームのアクション URL と同じにします。それapplication.jsに追加&ac=1して、コントローラーにそれを理解させます。

于 2009-05-13T14:41:40.177 に答える
2

はい、可能です。現在の Rails バージョンでは、 file を呼び出すだけですapplication.js.erb。古いバージョンでは、自分でロールするか、このようなものをつかむことができます。

于 2009-04-07T16:20:54.227 に答える
1

ハードコーディングする必要はありません。オートコンプリート リスナーを追加する単一の JS 関数を作成し、オートコンプリートのパラメーターを受け入れ、テンプレートからその JS 関数を呼び出すだけです。

(わかりやすくするためにコードを簡略化)

アプリケーション.js:

function add_autocomplete(id, url) {
   $("#" + id).autocomplete(
      source: url  
   );
};

application_helper.rb:

def add_autocomplete(id, url)
  render :text => "<script> add_autocomplete('#{id}', '#{url}');</script>"
end

ERb テンプレート:

<input id="i_want_autocomplete" />
<%= add_autocomplete("i_want_autocomplete", items_js_path() %>
于 2010-03-11T14:16:46.910 に答える