我的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
我的视图文件,我输出标签:<%=raw post.tag_list.map {|t| link_to t, tag_posts_path(t), class: "tags" }.join (' ') %>
问题是:当我点击标签时,我得到url:* / posts / tag.Sometag,页面为空。 猜猜我需要更改我的路线文件..但我不知道该怎么做
答案 0 :(得分: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 (' ') %>