24

Rails 3ベータ版で遊んでいたところ、link_to_functionがなくなっていることに気づきました。同じ結果を達成する別の方法(onclickイベント?)があると思いますが、もっとRails-3'yの方法があるのではないかと思っていました。TIA。

4

3 に答える 3

27

Rails 3 は Prototype Helper を廃止し、目立たない/JS ライブラリにとらわれないアプローチを採用したようです。目標は、Rails によって生成されたすべてのインライン JavaScript を排除することです。Prototype Helper はほとんどすべての JavaScript を生成しました。

:remote => true オプションを指定するだけで、ヘルパーの非リモート バリアントのいずれかが、選択した JS ライブラリでリモート呼び出し用の適切な JavaScript を生成します。

残念ながら、これは x to function メソッドには当てはまりません。当分の間、Rails のコア部分ではなくなったプロトタイプのレガシー ヘルパーがあります。

ActionView::Helpers::PrototypeHelper::JavascriptGenerator::GeneratorMethods で定義されているように call を使用して、link_to の html_option として :onclick に JavaScript コードを提供することもできますが、それは正確ではありません。

例:

Rails < 3                      | Rails 3
link_to_remote "target", url   | link_to "target", url, :remote => true
form_remote_for @post          | form_for @post, :remote => true

等....

またはその趣旨の何か。私の主張を裏付ける公式文書を見つけるのに苦労しています。したがって、リリースノートは今のところ行う必要があります。

使用する前に、適切な js ソース ファイルを含める必要があります。必ず、prototype.js と rails.js、または選択した JS フレームワークのライブラリとドライバーをその場所にロードしていることを確認してください。

Rails 3 は現在ベータ版です。しかし、それはそれが完了したという意味ではありません。正直なところ、link_to_function がどのように置き換えられるかわかりません。それは控えめな JavaScript の理想に反します。

于 2010-02-12T07:42:26.657 に答える
8

私自身の質問に答えるために、これはうまくいくようで、私が必要とするものには十分です:

link_to "name", nil, :onlick => "alert('Hello, world!')"
于 2010-02-12T10:57:02.197 に答える
0

link_to_remote はこのように行うことができます

link_to "target",:remote => true

そして ajax 投稿を行う/取得する

link_to "target", {:controller => コントローラー, :action => メソッド, }, :remote => true

Rails2ではこんな感じでした

link_to_remote "ターゲット", :url => {:controller => コントローラー, :action => メソッド, }, :remote => true

于 2011-05-24T10:11:31.413 に答える