2017-11-09 7 views
0

Railsを使用して複数のルートを1つのコントローラアクションに変換する、よりクリーンでエレガントな方法があるのだろうかと思います。ElegantRails - 1つのコントローラへの複数のルートアクション

これはこのpostを読んだことがありますが、使用する際にエラーが発生し続けました。

ここで行うことはあまりありません。大したことではありません。私はダーティーボムと呼ばれるビデオゲームでウェブサイトを構築しています。リストされる必要がある合計19の傭兵があります。そのため、もっとクリーンな方法でこれをやりたかったのです。

ありがとうございました。

+0

[ワイルドカードセグメント](http://guides.rubyonrails.org/routing.html#route-globbing-and-wildcard-segments)でお読みください。それはまさにあなたがやっていることです。 – jvillian

答えて

1

絶対にあります。あなたのルートに直接パラメータを使用することができます。さらに、caseステートメントを使用するのではなく、そのパラメーターを照会で直接使用することができます。

#routes.rb 
 

 
get 'suggestions/:type', to: 'suggestions#index' 
 

 
# suggestions_controller.rb 
 

 
def index 
 
    @suggestions = Suggestion.where(suggestion_type: params[:type]) 
 
end

それは、常にではなく、パスやリクエストオブジェクトの任意の解釈を行うよりも、パラメータの後にお使いのコントローラのアクションをベースにするために、より良い習慣です。

うまくいきますように!

+0

こんにちは、ロブ、クール!あなたの質問に「すべて」を使う必要はありません。テストを行う:Suggestion.all.where(suggestion_type:params [:type])。to_sqlとSuggestion.where(suggestion_type:params [:type])。to_sqlは同じSQL文を生成する – smile2day

+0

ああ!うん、コピー/貼り付けをしていて、.allを削除するのを忘れていた。絶対的に正しい。 –

+0

これは私のために完全に働いた – Student22

関連する問題