2011-07-18 11 views
4

私はAJAXを介して動作をレンダリングするようにしたいと思います。私はrespond_toとjs.erbについて読んだ。しかし、私は本当にすべてのlink_toを通過するように感じると:remote => trueレールはAJAX経由ですべてのアクションをレンダリングします - 簡単な方法はありますか?

を追加しかし、私の主な関心事は、ほぼ同じjs.erbファイルを作成ではありません。

AJAXfulウェブサイトを作成するための方法はありますか?おそらくinherited_resourcesのようなものでしょうか?

答えて

0

リンクの:remote => trueビットは、結果のHTMLリンクにdata-remote属性を追加します。

次に、適切なセレクタを目立たせず、Rails(ActionPack)がこれがAJAXリクエストであることを理解させるために必要なヘッダを追加するrails ujsドライバがあります。

解決方法1つの解決策は、Javascriptを使用してAJAX(そうしたいかどうかわからない)のすべてのリンクを設定するか、またはremote => trueの別のヘルパーメソッドを上書き/拡張/作成することです。セット。それらの線の周り

何か:

def ajax_link_to(url, label) 
    link_to label, url, :remote => true 
end 

が意のままに、HTMLオプションなどが含まれるように展開します。

それともalias_method_chain(未テスト)を持つ:

def link_to_with_ajax(title, args = {}) 
    link_to_without_ajax(title, args.merge(:remote => true)) 
end 
alias_method_chain :link_to, :ajax 
+0

ありがとうございました。しかし、再び、これは私が私の行動リンクをすべて通過し、それらを変更する必要があります。 – bassneck

+0

私は100%ajaxリンクを持つWebアプリケーションを見たことはありませんが、link_toにalias_method_chainを使用しようとすると、私は例を投稿しようとします。 – kain

+0

Gmailを試しましたか? :) – bassneck

0

デフォルトのフォーマットタイプをJSONに設定して、コントローラアクションをajaxとして呼び出すことができます。 how to set up the default format typeには次のような質問があります。これは、リソースごとにこれを行う必要があるようです。私はこれを試したことはありません...私はサイト全体でそれを行うよりも、必要に応じてajaxを使用します。

+0

に重く、それを使用し、これはformat.jsで動作するはずです

// Ajax navigation $('a').live('click', function(e) { e.preventDefault(); link = $(this); target = link.attr('target') $('#'+target).load(link.attr('href'), function() {}); }); 

.ready私の$(文書)に次の追加しました。ありがとう。しかし、私の最大の関心事はhtmlをレンダリングすることです。私は〜15-20 js.erbファイルを作る必要があります。これはあまり乾燥しません。 – bassneck

+0

これは楽しいことではありません。他のテンプレートの宝石が何であるか、そしてそれらのそれぞれがどのようにこの問題に取り組んでいるかを見ることができます。しかし、私はこれに簡単な答えがないだろうと思う。あなた自身の宝石を書くと私はそれを使用します! – jaydel

+0

はい、私はすでにこれを考えています:) – bassneck

2

私は、単一のものを編集しなくても、jqueryのを使用してAJAXへのすべての私のリンクを変換するために管理。私は私は私のショートカットjQueryプラグイン私は推測https://github.com/map7/jquery.beeline

関連する問題