検索結果が一件の場合のみURLを個別ページの物に変える
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
を使うと再取得で無駄な処理が走ってしまうし、
うまい方法が思いつかず困っています。
このような場合に一般的な処理などはありませんか?