2014-01-17 51 views
0

我在posts_controller的方法,加標籤:無法排序通過使用標籤的行爲崗位上

def tag 
    @posts = Post.all.tagged_with(params[:id]).page(params[:page]).per(10) 
    render :action => 'index' 
    end 

我的路線文件:

resources :posts do 
    collection do 
     get :top 
     get :revelance 
     get :tag 
    end 
    end 

我的視圖文件,其中i輸出標籤:<%=raw post.tag_list.map {|t| link_to t, tag_posts_path(t), class: "tags" }.join (' ') %>

問題是:當我點擊標籤時,我得到的網址:*/posts/tag.Sometag和頁面是空的。 想我需要改變我的路線文件..但我不知道該怎麼辦

+0

您是否想通過選定的標籤獲得包含帖子列表的頁面?用uri:'/ posts/tag /:tag_name'? (你也可以觀看演員http://railscasts.com/episodes/382-tagging,標籤有很多東西。) – itsnikolay

回答

0

你實際上並不需要此標記方法,你可以直接做在index行動的工作:

def index 
    @posts = if params[:tag] 
    Post.all.tagged_with(params[:tag]).page(params[:page]).per(10) 
    else 
    Post.all.page(params[:page]).per(10) 
    end 
end 

然後你可以定義你的路線是這樣的:

get 'tags/:tag', to: 'posts#index', as: :tag 

而且在你看來與之相適應:

<%= raw post.tag_list.map {|t| link_to t, tag_path(t), class: "tags" }.join (' ') %>