2

この問題に遭遇したとき、私は自分のウェブサイトで作業していました。ブログに 100 件の投稿があり、一度に 10 件ずつページ分割しています。最初の 15 件を表示し、基本的に link_to_remote タグを使用して実装されているリンクを下部に表示します。 .

<%= link_to_remote "More Posts", :url => {:action => 'view' ,:id => link.to_i + 1} , :html => {:id => 'more-link'} %>

それをクリックして次の 15 件の投稿を取得し、insert_html を介して最初の 15 件の投稿を含むコンテナーに追加します。

page.insert_html :bottom, :puzzles , :partial => 'puzzles', :object => @puzzles

今私が欲しいのは、ページの下部にあるリンクも更新することです。これにより、次にユーザーがさらにクリックすると、3番目のバッチが取得されます。基本的に次のようなもの

page.replace_html 'more-link', link_to_remote "More Posts", :url => {:action => 'view' ,:id => link.to_i + 1} , :html => {:id => 'more-link'}

どうすればそれができるかについての手がかりはありますか?

4

1 に答える 1

2

あなたはとても近くにいます。

replace_html は (DOM_id、レンダリングのオプション) で呼び出されます。基本的に、link_to_remote 呼び出しの出力をレンダリングする必要があります。ただし、render が使用できる形式で渡しているわけではありません。Barry Hess が指摘しているように、変更する内容のほとんどはタグ属性であるため、replace はこのタスクに適しています。

replace_html を使用するとタグがネストされ、問題が発生する可能性があります。要素を完全に置き換えたい。Replace の構文は replace_html と同じであるため、replace_html を replace に切り替えるだけでも同じ問題が発生します。

これがあなたが望むものです:

page.replace 'more-link', :text => link_to_remote "More Posts", 
  :url => {:action => 'view' ,:id => link.to_i + 1} ,
  :html => {:id => 'more-link'}

ただし、RJS から link_to_remote にアクセスできるかどうかはわかりません。上記がうまくいかない場合は、いつでもこれを行うことができます:

page.replace 'more-link', :inline => "<%= link_to_remote 'More Posts', 
  :url => {:action => 'view' ,:id => link.to_i + 1},
  :html => {:id => 'more-link'} %>", :locals => {:link => link}
于 2009-11-05T07:09:05.007 に答える