2016-08-09 10 views
0

こんにちは私はそれをデータベースと比較して存在するかどうかチェックするためにフォームからstart_hourパラメータを要求する必要がありますが、フォームにあるパラメータを再入力するとRuby on Rails DateTimeが必要ですparam

<%= f.datetime_select :start_hour, { :order => [:month, :day, :year, :hour, :minute], :prompt => { :day => 'Dia', :month => 'Mes', :year => 'Ano', :hour => 'Hora', :minute => 'Minuto' } }, {:class => "form-control", :style => "display: inline-block; 
    width: auto; 
    vertical-align: middle;"} %> 

私はコントローラーでこれをnilとしていますが、どのようにdatetime形式を要求できますか?どうもありがとう。あなたはあなたの強いパラメータのパラメータを設定した場合、ここに私のコントローラ

def create 
     @start_hour  = params[:courtesie][:start_hour] 
     @lesson_check = Lesson.find_by(start_date: @start_hour) 
     if @lesson_check.present? 
      @new_courtesie = Courtesie.new(courtesie_params) 
      @new_schedule = Schedule.new() 
      @new_schedule.options = params[:courtesie][:name] 
      @new_schedule.lesson_id = @lesson_check.id 
      @new_schedule.user_id = current_user.id 

      if @new_courtesie.save && @new_schedule.save 
       flash[:success] = "Cortesia agendada" 
       redirect_to  cortesias_path 
      end 
     else 
      flash[:warning] = @start_hour 
      redirect_to cortesias_path 
     end 

end 

フォームコード

<%= form_for(:courtesie, html: { class: "form-horizontal" }) do |f| %> 
                <div class="form-group"> 
                <label class="control-label col-md-2" for="sitename"> Nombre cortesia 
                </label> 
                <div class="col-md-9"> 
                 <%= f.text_field :name, class: 'form-control' %> 
                </div> 
                </div> 

                <div class="form-group"> 
                <label class="col-lg-2 control-label" for="sitename"> Fecha cortesia</label> 

                <div class="col-lg-10"> 
<%= f.datetime_select :start_hour, { :order => [:month, :day, :year, :hour, :minute], :prompt => { :day => 'Dia', :month => 'Mes', :year => 'Ano', :hour => 'Hora', :minute => 'Minuto' } }, {:class => "form-control", :style => "display: inline-block; 
    width: auto; 
    vertical-align: middle;"} %> 
                </div> 

                </div> 

                <div class="form-group"> 
                <label class="control-label col-md-2" for="sitename"> Telefono </label> 
                <div class="col-md-5"> 
                 <%= f.number_field :phone, class: 'form-control' %> 
                </div> 
                </div> 
                <div class="form-group"> 
                <label class="control-label col-md-2" for="sitename"> Email </label> 
                <div class="col-md-5"> 
                 <%= f.text_field :email, class: 'form-control' %> 
                </div> 
                </div> 
                <div class="form-group"> 
                <div class="col-lg-9 col-lg-offset-2"> 
                <%= f.submit "Guardar", class: "btn btn-primary" %> 
                 <button type="reset" class="btn btn-default">Reiniciar</button> 
                </div> 
                </div> 
             <% end %> 
+0

@ArunKumarノップ私はどんな終わりも見逃さない、それについてのエラーが出ないよ – mdiaz00147

+0

すみません。私は間違っていた、なぜ私は私のコメントを削除した。決して気にしない –

+0

フォームコードを投稿できますか?修正がありますが、フォームコードを確認する前に共有することはできません。 –

答えて

0

チェックです。

def courtesie_params 
    params.require(:courtesie).permit(:start_hour, ...) 
end 

許可されていない場合はゼロになります。

+0

私はすでに許可セクションにありますが、厳しい作業をしていません – mdiaz00147

+0

あなたは@ arun-kumarが書いたことをしなければならないかもしれません。あなたはcourtesie-Instanceをまず '@courtesie = Courtesie.new(courtesie_params)'で作成し、次に '@courtesie.start_hour'に簡単にアクセスすることができます。 – Mathias

0

強力なパラメータでstart_hour属性を許可したと仮定します。他の分野とは異なり、あなたは私が何を言っているかの感覚を持っているためにparams[:courtesie][:start_hour]

ようDATE_TIMEフィールドの値にアクセスすることはできません、今ならば

def create 
    render text: courtesie_params 
end 

であなたのcreate方法でコードを置き換えますフォームを送信すると、フォームデータがレスポンスとして表示されます。

これは、フォームデータはまあ、あなたがより多くの価値を持っていますが、datetime値に焦点をすることができます可能性が

{"name"=>"what", "start_time(1i)"=>"2016", "start_time(2i)"=>"8", "start_time(3i)"=>"9", "start_time(4i)"=>"23", "start_time(5i)"=>"40"} 

どのように見えるかです。選択した値が保存されている場所を確認できます。その理由はparams[:courtesie][:start_hour]はゼロです。

だから、あなたが実際にdatetimeに収集された値を変換する必要があり、2つの日付時刻を比較するために、今すぐ

datetime_params = params[:courtesie] 
year = datetime_params["start_time(1i)"] 
month = datetime_params["start_time(2i)"] 
day = datetime_params["start_time(3i)"] 
hour = datetime_params["start_time(4i)"] 
minute = datetime_params["start_time(5i)"] 

のような値を取得する必要があります。

@start_hour = DateTime.new(year, month, day, hour, minute) 

ここで、これを使用してdatetime値を照会し、他のdatetime値と比較できます。

希望すると便利です。

関連する問題