1

Railsアプリには、「Photo」というモデルとPhotosControllerがあります。予想どおり、URL "/ photos"がすべての写真のHTMLレンダリングされたリストを(サムネイルとして)返し、 "/ photos / foo"が写真のHTMLレンダリングされた表現を返すように、URLをRESTfulにルーティングしました。「foo」のfriendly_idで。(私はXML、JSON、およびバイナリ表現も行いますが、ここでは関係ありません。)

リストページに初期ロード時に写真のサムネイルのサブセットを表示させてから、AJAX(具体的にはjQuery)を介してリストにサムネイルを動的に追加したいと思います。<li><img>写真/インデックスビューで個々の写真リストアイテム(基本的には)をレンダリングするHTMLをすでに持っています。jQueryはHTMLをDOMに直接挿入できるため、リストアイテムコードをパーシャルに抽出し、そのパーシャルをAJAXを介してリストにロードするのが最善の方法だと思います。

私の質問は、HTMLをパーシャルからDOMに取り込むための最良の方法は何ですか?

(私はすでに実装のアイデアを持っています。適切な投票とコメントを可能にするための回答として投稿します)。

4

2 に答える 2

3

最もRESTfulな方法は、写真のリストアイテム表現/ビューを写真のサブリソースにすることだと思います。それには以下が含まれます:

  • 新しいPhotos::ThumbnailsControllerの作成
  • 「/photos/:id / thumbnail」をこのコントローラーにルーティングします(したがって、私の例のURLは「/ photos / foo / thumbnail」になります)
  • このコントローラーのインデックスアクションを作成する(おそらく他のアクションは作成しない)
  • インデックスアクションを実行すると、リストアイテムコードを含むパーシャルがレンダリングされます。(この時点で、部分を完全に表示するのが理にかなっている場合があります)。
  • サムネイルをリストに追加したいときに、「/ photos /:id/thumbnail」をAJAXで呼び出します。

ただし、1つのパーシャル/ビューに対して他のコントローラー/リソース全体を用意するのは少しやり過ぎのようです。もっと良い方法はありますか?

于 2010-01-12T02:54:50.133 に答える
1

答えではなく提案です。Bingの画像検索37SignalsHaystack(Railsにもあります)のように、他のプレーヤーがどのように無限スクロールを行ったかを確認してください(ソースを表示)。

結果

(クレイグ編集)

HayStackは「/listings.js」を呼び出します。これは、responds_to呼び出しでおそらく異なるRails形式を使用していることを意味します。私はこれを検討しましたが、次の理由であまり好きではありません。

  • これは、他の目的で使用されていない(そして使用されることはない)URLにフォーマット(この場合はjs)があるかどうかに依存します。
  • その作業を行うには、JavaScript(およびその時点でのろくでなしのJS / HTML)に依存します。一貫性、再利用性、およびキャッシュ可能性のために、純粋なHTMLを使用したいと思います。

Bingの無限の検索JSは縮小されたので、それを解明するのにあまり時間をかけませんでした。

于 2010-01-12T12:50:58.740 に答える