[RUBY-ON-RAILS] 어떻게 레일에 date_select 또는 select_date에서 날짜를 얻으려면?
RUBY-ON-RAILS어떻게 레일에 date_select 또는 select_date에서 날짜를 얻으려면?
년, 월, 일 속성을 : [my_date] select_date를 사용하는 것은 나를 PARAMS을 백업 할 수 있습니다. 어떻게 쉽게 Date 객체를받을 수 있나요? [: my_date] .to_date 나는 PARAMS 같은 뭔가를 바라고 있어요.
내가 대신뿐만 아니라 date_select 사용하는 것이 행복 해요.
해결법
-
==============================
1.date_select를 사용하면 당신에게 각각 년, 월, 일 3 별도의 키 / 값 쌍을 제공합니다. 매개 변수는 새 Date 객체를 생성하기 위해 당신은 Date.new로 전달할 수 있습니다.
date_select를 사용하면 당신에게 각각 년, 월, 일 3 별도의 키 / 값 쌍을 제공합니다. 매개 변수는 새 Date 객체를 생성하기 위해 당신은 Date.new로 전달할 수 있습니다.
예제 date_select는 이벤트 모델 PARAMS을 반환
"event"=> {"name"=>"Birthday", "date(1i)"=>"2012", "date(2i)"=>"11", "date(3i)"=>"28"},
그런 다음 새 Date 객체를 생성합니다 :
event = params[:event] date = Date.new event["date(1i)"].to_i, event["date(2i)"].to_i, event["date(3i)"].to_i
대신하는 방법이 논리를 포장하기로 결정할 수도 있습니다 :
def flatten_date_array hash %w(1 2 3).map { |e| hash["date(#{e}i)"].to_i } end
[이벤트] 그리고 날짜로 = Date.new * flatten_date_array PARAMS를 호출. 그러나 이것은 당신이 다른 곳으로 이동하기로 결정할 수 있도록 진정, 컨트롤러에 속하는 논리는 아니다. [이벤트] 당신은 = Date.new_from_hash PARAMS을 Date 클래스에이 확장, 날짜로 호출 할 수 있습니다.
-
==============================
2.여기에 또 다른 하나는 다음과 같습니다
여기에 또 다른 하나는 다음과 같습니다
# view <%= date_select('event', 'date') %> # controller date = Date.civil(*params[:event].sort.map(&:last).map(&:to_i))
http://kevinlochner.com/use-rails-dateselect-without-an-activerecord에서 찾을 수
-
==============================
3.여기에 또 다른 하나
여기에 또 다른 하나
Date.civil(params[:event]["date(1i)"].to_i,params[:event]["date(2i)"].to_i,params[:event]["date(3i)"].to_i)
-
==============================
4.여기서 레일 5의 또 다른 하나는 :
여기서 레일 5의 또 다른 하나는 :
module Convert extend ActiveSupport::Concern included do before_action :convert_date end protected def convert_date self.params = ActionController::Parameters.new(build_date(params.to_unsafe_h)) end def build_date(params) return params.map{|e| build_date(e)} if params.is_a? Array return params unless params.is_a? Hash params.reduce({}) do |hash, (key, value)| if result = (/(.*)\(\di\)\z/).match(key) params_name = result[1] date_params = (1..3).map do |index| params.delete("#{params_name}(#{index}i)").to_i end hash[params_name] = Date.civil(*date_params) else hash[key] = build_date(value) end hash end end end
당신은 당신의 컨트롤러 또는 application_controller.rb에 포함해야합니다 :
class ApplicationController < ActionController::Base include Convert end
-
==============================
5.joofsh의 대답 @ date_select 예로, 여기 시작일이라고 날짜 필드를 추정 "원 라이너"내가 사용은이다 :
joofsh의 대답 @ date_select 예로, 여기 시작일이라고 날짜 필드를 추정 "원 라이너"내가 사용은이다 :
ev_params = params[:event] date = Time.zone.local(*ev_params.select {|k,v| k.to_s.index('start_date(') == 0 }.sort.map {|p| p[1].to_i})
-
==============================
6.나는 다음과 같은 이점이 있습니다 다음과 같은 방법을 사용합니다 :
나는 다음과 같은 이점이 있습니다 다음과 같은 방법을 사용합니다 :
PARAMS의 형식의 해시 { '2017', XXX (2I) : 12, XXX (3I) XXX (1I) (31), ...}; date_key 대상 날짜 매개 변수의 일반적인 문자열 XXX입니다.
def date_from_params(params, date_key) date_keys = params.keys.select { |k| k.to_s.match?(date_key.to_s) }.sort date_array = params.values_at(*date_keys).map(&:to_i) Date.civil(*date_array) end
나는 ApplicationRecord의 클래스 메소드보다는 같은와 ApplicationController의 인스턴스 도우미 방법으로이 문제를 배치하기로 결정했습니다. 내 논리는 유사한 논리가 레일 형태에서 전달 구문 분석 날짜에 액티브의 인스 (즉, Model.new) 내에 존재한다는 것입니다.
-
==============================
7.또는 단순히이 작업을 수행 :
또는 단순히이 작업을 수행 :
your_date_var = Time.parse(params[:my_date])
from https://stackoverflow.com/questions/13605598/how-to-get-a-date-from-date-select-or-select-date-in-rails by cc-by-sa and MIT license
'RUBY-ON-RAILS' 카테고리의 다른 글
[RUBY-ON-RAILS] has_many와 counter_cache : 통해 (0) | 2020.02.19 |
---|---|
[RUBY-ON-RAILS] 많은 자기에 많은 참여 레일 (0) | 2020.02.19 |
[RUBY-ON-RAILS] 말대꾸 :: 구문 에러 : 수입에 파일이 없거나 읽을 수 : 부트 스트랩 - 스프로킷 (0) | 2020.02.19 |
[RUBY-ON-RAILS] 어디 레일에서 글로벌 변수를 넣어 3 (0) | 2020.02.19 |
[RUBY-ON-RAILS] 이미지 회전 문제 EXIF S3에 업로드 carrierwave 및 rmagick를 사용하여 (0) | 2020.02.19 |