Userを「名前」、「性別」、「年齢層」、「居住地域」で検索する機能を実装したいのですが、エラーが出ており躓いでおります。
わかる方がいらっしゃいましたらご教授をお願いいたします。
実現したいこと
Railsで複数の条件での検索機能を実装したい。
試したこと・現状できていること
>model scope :search, -> (search_params) do return if search_params.blank? name_search(search_params[:name]) .sex(search_params[:sex]) .age(search_params[:age]) .region(search_params[:region]) end scope :name_search, -> {where('name LIKE ?', "%#{params[:name]}%") if name.present?} scope :sex, -> {where("sex = ?", params[:sex]) if sex.present?} scope :age, -> {where("age = ?", params[:age]) if age.present?} scope :region, -> {where("region = ?", params[:region]) if region.present?}
>controller def search @search_params = user_search_params @users = User.search(@search_params) end private def user_search_params params.fetch(:search, {}).permit(:name, :sex, :age, :region) end
>view <%= form_with(scope: :search, url: search_users_path, method: :get, local: true) do |f| %> <%= f.label :name, "ナマエ" %> <%= f.text_field :name, value: @search_params[:name] %> <%= f.label :sex, "性別" %> <%= f.text_field :sex, value: @search_params[:sex] %> <%= f.label :region, "地域" %> <%= f.text_field :region, value: @search_params[:region] %> <%= f.label :age, "年齢" %> <%= f.text_field :age, value: @search_params[:age] %> <%= submit_tag '検索', class: "button" %> <% end %> <% unless @search_params.blank? %> <% @users.each do |user| %> <tr> <td><%= user.name %></td> <td><%= user.age %></td> <td><%= user.sex %></td> <td><%= user.region %></td> </tr> <% end %> <% end %>
検索を実行したところ「wrong number of arguments (given 1, expected 0)」とエラーが出ます。
原因を調べてみたところ、 modelの記述に問題があるのかと思ったので見直してみたのですが原因が見つかりませんでした。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/12/23 18:41
2021/12/23 21:40