Я изучаю RoR и пытаюсь заменить элементы управления выпадающим списком по умолчанию, сгенерированные для поля datetime из леса, в два текстовых поля, один для даты и другой для времени.Текстовые поля даты и времени в Rails
В моем примере я выполнить следующую команду, чтобы создать ресурс Сообщений:
rails g scaffold post name:string content:text published_at:datetime
Я сделал следующие изменения до сих пор:
post.rb
class Post < ActiveRecord::Base
attr_accessor :published_at_date, :published_at_time
after_initialize :get_datetimes
before_validation :set_datetimes
def get_datetimes
self.published_at ||= Time.now
self.published_at_date ||= self.published_at.to_date.to_s(:db)
self.published_at_time ||= "#{'%02d' % self.published_at.hour}:#{'%02d' % self.published_at.min}"
end
def set_datetimes
self.published_at = "#{self.published_at_date} #{self.published_at_time}:00"
end
end
posts_controller.rb
class PostsController < ApplicationController
before_action :set_post, only: [:show, :edit, :update, :destroy]
def post_params
params.require(:post).permit(:content, :name, :published_at, :published_at_date, :published_at_time)
end
....
end
_form.html.erb
<%= form_for(@post) do |f| %>
....
<div class="field">
<%= f.label :published_at %><br>
<%= f.text_field :published_at_date, :size => 10, :maxlength => 10 %>
<%= f.text_field :published_at_time, :size => 5, :maxlength => 5 %>
</div>
....
<% end %>
Это отображает 2 Textboxes по мере необходимости, однако, если я изменить дату/время, вновь созданные почтовые Игнорирует они и устанавливают publish_at, published_at_date и publish_at_time в текущее время.
Что я делаю неправильно и как я могу это решить?