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

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

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

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

Ruby on Rails

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

Q&A

解決済

1回答

2697閲覧

ransackで生成したインスタンス内の値を取得したい。

hiropo

総合スコア21

Ruby on Rails 5

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

Ruby on Rails

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

0グッド

0クリップ

投稿2018/03/15 11:16

現在、RailsのGemのransackにて、検索フォームを作成しています。
再検索をした際にdatepicker内に変数が渡ってこない状態です。

実現したいこと

再描画した際に、datepicker内にunixtimeを変換しstring型の文字列表記を行いたい。
下記のようにpryで止めた際に@qの中身であるvaluesの取り出し方がわかりません。
わかる方がいらっしゃいましたら、ご教授ください。

原因

原因は、dbにはunixtimeで保存しているため、検索をかける際に、下記のようにunixtimeに変換しており、再描画された際に、@qにunixtimeが入っているためだと認識しています。

pryでとめた際の中身

[1] pry(#<JobSchedulesController>)> @q => Ransack::Search<class: JobSchedule, base: Grouping <conditions: [Condition <attributes: ["start_time"], predicate: gteq, values: [1519988640]>], combinator: and>>

コントローラー

def index if params[:q].present? if params[:q]["start_time_gteq"].present? params[:q]["start_time_gteq"] = Time.parse(params[:q]["start_time_gteq"]).to_i end if params[:q]["end_time_lteq"].present? params[:q]["end_time_lteq"] = Time.parse(params[:q]["end_time_lteq"]).to_i end end binding.pry @q = JobSchedule.ransack(params[:q]) @jobs = Job.mycontent(current_user) @schedules = ( params[:q].nil? ) ? JobSchedule.mycontent(current_user).order(start_time: 'desc').page(params[:page]).per(15) : @q.result.ransack(mycontent: current_user).result.page(params[:page]).per(15) end

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

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

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

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

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

guest

回答1

0

自己解決

こちらの記事を参考に
下記のようにransack.rbに設定することで解決しました。

Ransack.configure do |config| config.add_predicate 'gteq_parse_unixtime', :arel_predicate => 'gteq', :formatter => proc { |v| Time.parse(v).to_i }, :type => "string", :compounds => false end

投稿2018/03/16 02:12

hiropo

総合スコア21

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問