質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

0回答

1286閲覧

f.collection_checkboxes、チェック保持の方法、動画有り

退会済みユーザー

退会済みユーザー

総合スコア0

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2019/07/01 04:01

前提・実現したいこと

Railsでアプリ開発中です
EventモデルからRansackを利用した検索機能を実装しました。

検索項目は 「イベント名」、「曜日」、「レベル」、「種目」、「ステータス」の5つです。
イベント詳細画面でチェックを入れて送信し、searchアクションを動かした後のビューで、「レベル」、「種目」はチェックを保持していますが、曜日だけ保持されません。
違いとしては、曜日のカラムはテーブルに存在しておらず、ransackerを用いて定義していることです。

そこに原因があるのか考え調べましたがどうしても解決策が分からなかったので質問させていただきました。
チェックしたしないで送信されるパラメータに何か変化があるのかと疑いましたが特に分からず。。。
何をもってチェックされているされていないを判断しているのかも併せてご教授頂けると助かります。

現状:検索後、曜日検索のチェックボックスだけチェックが外れてしまう
実現したいこと:検索後もチェックを保持したい

キャプチャ動画です
https://gyazo.com/151a39ccef5ebbeef6060bf7fa9204fe

何卒よろしくおねがい致します。

該当のソースコード

ruby

1#event.rb 2 enum dayw: {"月": 1,"火": 2,"水": 3,"木": 4,"金": 5,"土": 6,"日": 0} 3 enum level: {"初級": '初級',"初中級": '初中級',"中級": '中級',"中上級": '中上級',"上級": '上級'} 4 enum play_type: {"シングルス": 'シングルス',"ダブルス": 'ダブルス'} 5 6 private 7 ransacker :dayw do 8 Arel.sql("date_format(event_date,'%w')") 9 end 10

ruby

1#show.html.haml 2=search_form_for(@q, url:search_prefecture_path) do |f| 3 .field 4 = f.label :title_cont,'オフ名で検索' 5 = f.search_field :title_cont 6 .field 7 = f.label :dayw_in,'曜日で検索' 8 = f.collection_check_boxes :dayw_in, Event.dayws, :last, :first 9 .field 10 = f.label :level_in,'レベルで検索' 11 = f.collection_check_boxes :level_in, Event.levels, :last, :first 12 .field 13 = f.label :play_type_in,'種目で検索' 14 = f.collection_check_boxes :play_type_in, Event.play_types, :last, :first 15 .field 16 - f.label :status_eq,'ステータスで検索' 17 = f.collection_select :status_eq, Event.statuses, :last, :first, prompt: true 18 .field 19 = f.submit :検索

ruby

1#prefecture_controller.rb 2class PrefecturesController < ApplicationController 3 def show 4 @prefecture = Prefecture.find(params[:id]) 5 @events = @prefecture.events 6 @q = Event.ransack 7 @venues = @events.group(:latitude).order(:id) 8 gon.venues = @venues 9 duplicate = @events.group(:latitude).having('count(*)>=2').pluck(:latitude) 10 gon.events = Event.where(latitude: duplicate).offset(1) 11 end 12 13 def search 14 15 @prefecture = Prefecture.find(params[:id]) 16 @q = Event.ransack(search_params) 17 @events = @q.result(distinct: true) 18 @venues = @events.group(:latitude).order(:id) 19 gon.venues = @venues 20 duplicate = @events.group(:latitude).having('count(*)>=2').pluck(:latitude) 21 gon.events = Event.where(latitude: duplicate).offset(1) 22 end 23 24 private 25 26 def search_params 27 params.require(:q).permit(:title_cont,{:dayw_in => []},{:level_in => []},{:play_type_in => []},:status_eq) 28 end 29 30end 31

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問