お世話になっております
入力フォームと詳細ページを作成しています。
入力フォームで日付けを入力しなければ詳細ページには何も出力されない(DBにはnullが入る)
日付けを入力すれば詳細ページに入力した日付けが出力されるようなコードを作成したいと思っていますが
入力フォームで日付を入力しなかった場合、nullでなく、変数が入ってしまい、理由がわからず息詰まっています。
logを取ってみると、
0007-07-07 00:00:00 +0700 のように登録されてしまいます。
該当コードは
入力フォーム
html
1 2 <tr> 3 <th>掲載日</th> 4 <td><span> 5 <%= f.select :date_y , @years, {include_blank:true},{class: getErrFieldClass(@news.errors[:date].any?, "")} %> 6 年 7 <%= f.select :date_m, (1..12).to_a, {include_blank:true}, {class: getErrFieldClass(@news.errors[:date].any?, "")} %> 8 月 9 <%= f.select :date_d, (1..31).to_a, {include_blank:true}, {class: getErrFieldClass(@news.errors[:date].any?, "")} %> 10 日 11 </span></td> 12 </tr>
controller
ruby
1 def update(news) 2 3 begin 4 @db.query("START TRANSACTION") 5 6 sql = "UPDATE table1 SET 7 date = ?" 8 st = @db.prepare(sql) 9 st.execute(news.date || nil) 10 st.close 11 @db.commit 12 rescue => ex 13 @db.rollback 14 raise ex 15 end 16 end
models
ruby
1 def set_select_date(params) 2 #選択した日時をdateに登録する。 3 now = self.try(:date) || Time.now 4 self.end_date_y = params['news']['date_y'].blank? ? now.hour : params['news']['date_y'] 5 self.end_date_m = params['news']['date_m'].blank? ? now.hour : params['news']['date_m'] 6 self.end_date_d = params['news']['date_d'].blank? ? now.hour : params['news']['date_d'] 7 8 begin 9 self.date = Time.new(self.date_y, self.date_m, self.date_d) 10 rescue 11 end 12 end
詳細画面
html
1 <%if @news.date.present?%> 2 <tr> 3 <th>掲載日</th> 4 <td><%= @news.date.year %>年 <%=@news.date.month %>月 <%=@news.date.day %>日</td> 5 </tr> 6 <%end%>
です。
どなたかお力を貸していただきたいです、よろしくお願いします。
あなたの回答
tips
プレビュー