Railsで検索機能をつけたかったので以下のようにsearchをコントローラに追加して
検索結果が0件ならエラー表示、一件なら個別、複数件なら indexを表示するようにしています。

app/controllers/companies_controller.rb

  def search
    @companies = Company.search(params[:search]).page(params[:page])
  end

app/views/companies/search.html.erb

<%= render 'search_error' if @companies.count == 0 %>
<%= render 'show', company: @companies.first if @companies.count == 1  %>
<%= render 'index', companies: @companies if @companies.count > 1 %>

ここで個別ページを表示する時はURLをshowの時と同じ個別のものに変えたくなったのですが、
その場合はやはりcontroller側に分岐処理を書くことになるのでしょうか?

ただそうしても redirect_to を使うと再取得で無駄な処理が走ってしまうし、
うまい方法が思いつかず困っています。

このような場合に一般的な処理などはありませんか?