Rails 3ベータ版で遊んでいたところ、link_to_functionがなくなっていることに気づきました。同じ結果を達成する別の方法(onclickイベント?)があると思いますが、もっとRails-3'yの方法があるのではないかと思っていました。TIA。
3 に答える
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 の理想に反します。
私自身の質問に答えるために、これはうまくいくようで、私が必要とするものには十分です:
link_to "name", nil, :onlick => "alert('Hello, world!')"
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