Support incomplete topic urls like /t/just-a-slug; fix error when using route /t/:topic_id/:post_number

This commit is contained in:
Neil Lalonde
2013-05-29 18:01:25 -04:00
parent b7c05d8080
commit 5d444be72b
4 changed files with 39 additions and 13 deletions

View File

@ -21,9 +21,16 @@ class TopicsController < ApplicationController
before_filter :consider_user_for_promotion, only: :show
skip_before_filter :check_xhr, only: [:avatar, :show, :feed]
skip_before_filter :check_xhr, only: [:avatar, :show, :feed, :redirect_to_show]
caches_action :avatar, cache_path: Proc.new {|c| "#{c.params[:post_number]}-#{c.params[:topic_id]}" }
def redirect_to_show
topic_query = ((num = params[:id].to_i) > 0 and num.to_s == params[:id].to_s) ? Topic.where(id: num) : Topic.where(slug: params[:id])
topic = topic_query.includes(:category).first
raise Discourse::NotFound unless topic
redirect_to topic.relative_url
end
def show
opts = params.slice(:username_filters, :best_of, :page, :post_number, :posts_before, :posts_after, :best)
@topic_view = TopicView.new(params[:id] || params[:topic_id], current_user, opts)