質問: 現在Railsで掲示板のようなサービスを作っていて、掲示板に投稿するときに性別、年代、地域、などのプロフィールを入力できるようになっています。 そこで投稿をプロフィール毎に分けたページを作りたいのですが問題にぶつかってしまいました。 説明しづらいので具体的にいますと 例えば「20代東京の男性」の投稿を表示させることは出来るのですが、「30代東京の男性」、「40代東京の男性」、「50代東京の男性」、「20代東京の女性」、、、、、、とひとつひとつ手作業で書いてページを作っていくのはとても手間です。 年代は10〜50代で選べるので 2×5×47通りのページを作らなければいけないわけです それではとても大変なので何か良い解決策や、いい具合にやってくれるgemなどがありましたらぜひ教えていただきたいです。
回答: Ruby on Railsの理念は同じ(同じような)コードを2度書かないです。 partial化と gem ransack をお勧めします。 これは検索用のgemですが _search.html.erb ``` <%= search_form_for @q ,url: {:controller=>"hoge",:action=>"index"} do |f| %> 年齢 <%= f.select :nenreikubun_id_eq,@nenreikubun,:include_blank=>true %> 性別 <%= f.select :seibetu_id_eq ,@seibetu,:include_blank=>true%> 出身県 <%= f.select :todouhuken_eq,@todouhuken,:include_blank=>true %> <%end%> ``` hoge_controller.rb ``` def index @q=Hoge.search(params[:q]) @hoge=@q.result @nenreikubun=NenreiKubun.pluck(:name,:id) @seibetu=Seibetu.pluck(:name,:id) @todouhuken=Todouhuken.pluck(:name,:id) end ``` 現在のindex.html.erbを _index.html.erbに変えて index.html.erb ``` <%= render :partial=>'search' %> <%= render :partial=>'index' %> ``` とするだけで828kk88 さまのやりたいことはできたも当然です。