Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/53.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Heroku中的日期格式_Ruby On Rails_Heroku_Locale - Fatal编程技术网

Ruby on rails Heroku中的日期格式

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/%

我对Rails和Heroku完全是个新手。我用基本CRUD创建了一个应用程序,我已经将其部署到Heroku。某个实体具有日期属性。使用此值创建或更新时:

2011年4月9日

它另存为:

2011年9月4日

在本地运行(使用SQLite)时,我看不到这种行为。我想知道是否需要更明确地了解文化,所以我修改了config/locales/en.yml,如下所示:

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