我是一个完整的铁杆菜鸟,所以我可能会在这里找到一些非常简单的东西。我有这些叫做微博的小推文类型的东西,我希望每个微博都有一个由用户设置的发布日期。我的表单看起来没问题,并且在创建新的微博时浏览器中没有显示任何错误,但发布日期没有保存在数据库中。在我创建新微博的形式中,我有这个:
<div class="field">
<%= f.label :release_date %>
<%= f.text_field :release_date, :size => 10 %>
</div>
在我的数据库架构中,我有:
create_table "microposts", :force => true do |t|
t.string "content"
t.integer "user_id"
t.datetime "created_at"
t.datetime "updated_at"
t.datetime "release_date"
end
我在我的Micropost模型中可以访问release_date属性,如下所示:
attr_accessible :content, :release_date
我的Micropost控制器中的create方法如下所示:
def create
@micropost = current_user.microposts.build(params[:micropost])
if @micropost.save
flash[:success] = "New event created."
redirect_to root_path
else
render 'pages/home'
end
end
其他一切都保存得很好。这只是发布日期似乎被忽略了。这只是一个疯狂的猜测,但是像10/25/2011这样的东西被保存为日期时间吗?或者是应该将其保存为字符串然后解析为正确的日期时间格式?
答案 0 :(得分:0)
这里有很多信息需要评估。 params hash可能没有值,或者没有以rails预期的方式进行哈希处理。
在您的用户模型中,您有:
accepts_nested_attributes_for :microposts
此外,您还需要在rails中查找form_for和fields_for上的教程。
答案 1 :(得分:0)
您输入日期的格式可能无法正确投射到日期时间:
def Micropost < ActiveRecord::Base
before_validation_on_create :convert_release_date_to_datetime
private
def convert_release_date_to_datetime
self.release_date = Time.parse(release_date)
end
end