2012-03-02 22 views
4

私は現在、マイクロポストのリストを表示するページを持っていて、Most RecentMost DiscussedMost Viewedのようないくつかのタブも含んでいます。私は、ページ全体とAjaxをリフレッシュせずに、マイクロポストのさまざまなタイプのリストオーダをレンダリングする最良の方法を考えていました。私はこれをやり遂げる方法を確信していますが、誰かが私に助けてくれたら喜んで学びます。ありがとうございました :)。私はこれまでずっとこれを持っています。あなたは正しい道の上にいるようなRails:ボタン付きAjaxによる部分的なレンダリング

ページのHTML

<div id='ContentHeader'> 
<%= render 'microposts/new' %> 
<div class='StreamTabContainer'> 
<ul class='StreamTabs'> 
<li class='StreamTab StreamTabRecent active'> 
<%= link_to 'Most Recent', some_path, :remote => true, :class => 'TabText' %> 
</li> 
<li class='StreamTab StreamTabDiscussed'> 
<%= link_to 'Most Discussed', some_path, :remote => true, :class => 'TabText' %> 
</li> 
<li class='StreamTab StreamTabViews '> 
<%= link_to 'Most Views', some_path, :remote => true, :class => 'TabText' %> 
</li> 
<li class='StreamTab StreamTabRated'> 
<%= link_to 'Highest Rated', some_path, :remote => true, :class => 'TabText' %> 
</li> 
</ul> 
</div> 
</div> 


<div id='ContentBody'> 
<div id='ajax'></div> 
<%= render 'users/microposts', :microposts => @microposts %> 
</div> 

答えて

5

が見えます。あなたの意見はすばやく正しいようです。

この作品を作るためのわずか数最後のピースがあなたのコントローラがjsの呼び出しを受け入れることができることを確認することから始めて、あります

# Inside Controller's action 
respond_to do |format| 
    format.js 
end 

あなたがそれを設定したら、あなたはに戻るためのjavascriptを作成する必要があります各呼び出しのクライアント。作成ビューのフォルダ内のファイル

# app/views/controllerName/actionName.js.erb 
$('#ajax').html("<%= escape_javascript(render(:partial => 'content', :sortingType => 'type')) %>"); 

上記は、あなたが(この例では、私はコンテンツそれを命名している)の記事を示している部分をレンダリングすることができ、かつ部分的にsortingTypeのローカル変数に渡します。その応答はdiv id = "ajax"(あなたの例)のhtmlの中に置かれます。最後のステップは、あなたの投稿のすべては、あなたが

# app/views/resourceName/_content.html.erb 
# Simply create your view partial here, which uses the :sortingType to display your posts in the order you need 

がうまくいけば、これはあなたの内包にあなたが近づくでしょう希望の道をソートレンダリングする部分図を作成することです。

編集:実現私は引用符でいくつかの問題がありました。

+0

タブリンクのリンク内にはどうすればよいですか? – Kellogs

+0

ルートファイルに追加する必要があるものはありますか? – Kellogs

+0

既にこのコントロールにルーティングできた場合は、ルートに追加の作業が必要ありません。 link_toはいくつかのパラメータチェックで現在のアクションを呼び出すことができます。または、新しいアクションを作成し、その新しいアクションを通じてlink_toを作成することもできます。 – coderates

関連する問題