Ruby on rails Heroku中的日期格式
我对Rails和Heroku完全是个新手。我用基本CRUD创建了一个应用程序,我已经将其部署到Heroku。某个实体具有日期属性。使用此值创建或更新时: 2011年4月9日 它另存为: 2011年9月4日 在本地运行(使用SQLite)时,我看不到这种行为。我想知道是否需要更明确地了解文化,所以我修改了config/locales/en.yml,如下所示:Ruby on rails Heroku中的日期格式,ruby-on-rails,heroku,locale,Ruby On Rails,Heroku,Locale,我对Rails和Heroku完全是个新手。我用基本CRUD创建了一个应用程序,我已经将其部署到Heroku。某个实体具有日期属性。使用此值创建或更新时: 2011年4月9日 它另存为: 2011年9月4日 在本地运行(使用SQLite)时,我看不到这种行为。我想知道是否需要更明确地了解文化,所以我修改了config/locales/en.yml,如下所示: en: hello: "Hello world" date: formats: default: "%m/%
en:
hello: "Hello world"
date:
formats:
default: "%m/%d/%Y"
这似乎没有任何影响。想法
更新:以下是控制器操作:
def create
@entry = Entry.new(params[:entry])
respond_to do |format|
if @entry.save
format.html { redirect_to entries_path }
format.xml { render :xml => @entry, :status => :created, :location => @entry }
else
format.html { render :action => "new" }
format.xml { render :xml => @entry.errors, :status => :unprocessable_entity }
end
end
end
以下是视图:
<%= f.text_field :date, :value => (@entry.date.blank? ? '' : @entry.date.strftime('%m/%d/%Y')), :class => 'date' %>
(@entry.date.blank??”:@entry.date.strftime(“%m/%d/%Y”),:class=>“日期”%>
模型如下:
class Entry < ActiveRecord::Base
end
类条目
locales文件仅确定日期在页面上输出时的呈现方式,而不是Db存储日期的方式。Db知道如何存储传递的日期,您是使用日期选择来允许用户选择日期,还是使用文本框?取决于您在Heroku上使用的ruby版本,这可能是因为date.parse
假设为EU格式(我认为这始于1.9:)
我会检查您是否在本地开发工作中使用了相同版本的ruby,如果这是一个问题,您可以覆盖属性上的setter:
class Entry < ActiveRecord::Base
def date=(v)
if v.kind_of?(String)
self.write_attribute(:date, Date.strptime(v.to_s, "%m/%d/%y"))
else
super
end
end
end
类条目
我使用一个文本框(因此我可以使用JS日期选择器)。表单帖子包含“09/04/2011”。这个答案是正确的建议,但仍然是问题的一部分。它应该被编辑成一个没有问题的答案的形式。我不太明白如何判断Heroku运行的是什么版本。我很乐意直接解析。我在哪里/怎么做?我已经更新了我的帖子以显示我现有的代码。谢谢无论版本如何,您都可以通过从heroku控制台(如noob)尝试Date.parse
来确认此行为。果然,这是欧盟风格。有效的方法是将堆栈从竹-mri-1.9.2更改为竹-ree-1.8.7。我不知道其他的含义,但它解决了这个问题。来自.NET,我有点惊讶没有找到一个简单的方法来设置应用程序的文化。
class Entry < ActiveRecord::Base
def date=(v)
if v.kind_of?(String)
self.write_attribute(:date, Date.strptime(v.to_s, "%m/%d/%y"))
else
super
end
end
end