javascript - 如何使用 javascript 以 Rails 形式获取本地时间?

标签 javascript ruby-on-rails ruby-on-rails-3 timezone localtime

我使用 local_time gem 来显示用户本地时间的日期,它对于已添加的日期非常有效,可以以我的本地时间显示它们。

我在添加新日期时遇到问题,我试图通过 HTML 表单传递用户本地时间(以及日期)。我认为客户端设备有本地时间,所以我需要获取它。

现在我正在尝试向表单添加一个字段,如下所示:

= simple_form_for(@link)do |f|
...
= f.text_field :local_client_time, value: local_time("#{Time.now()}")

但是正在显示

August 11, 2014 12:12pm" /> 

这不仅格式错误并且实际显示(应该隐藏),而且还显示 utc 时间,比我的浏览器时间(美国东部时间)早 5 小时。

如何在表单上传递用户本地时间? (可能是js)?

我也不确定如何在 Controller 上处理它。我目前有

@link = Link.new(params[:link])

以及之后的一些其他逻辑。我不确定如何让rails在创建Active Record实例时处理这个额外的参数(它会忽略它吗?),并且我也不确定如何使用通过隐藏字段传入的local_client_time,如在Rails 可用于实际设置日期字段值的日期格式 verified_date

注意:我需要为所有用户显示该字段,无论是否登录,但这对于 local_time gem 来说似乎没问题。唯一的问题似乎是添加具有时间部分的日期字段。美国东部时间晚上 8 点之后,它会添加为第二天,然后显示屏会反射(reflect)这一点。另一个字段('content_date')没有这些问题,但对于该字段,我只使用 f.text_field :content_date, id: 'datepicker', size: 10 并且在 Controller 中没有进行特殊处理,数据库中的日期字段。

两个日期字段看起来很相似:

| content_date   | date         | YES  |     | NULL    |                |
| verified_date  | date         | YES  |     | NULL    |                |

我还想知道验证的日期字段是否实际上应该是日期时间来解决这个问题。问题是我不关心时间部分,也从不使用或显示它。应用程序的日期/时间字段的最低粒度级别是 1 天。

最佳答案

我认为这就足够了:

= simple_form_for @link do |f|
...
  = f.text_field :local_client_time # This generates some unique ID I believe. Otherwise, define one yourself: id: <your-id>

# javascript
var localTime = new Date();
$('<ID generated through rails for your field>').val(localTime);

只要它是表单的一部分,Rails 就会在服务器端接收此附加参数。您需要做的是在 Active Record 模型类上添加一个参数(例如 local_client_time),然后确保通过您的强参数过滤器允许该参数(如果您正在使用 Rails 4)。

如果您的 Active Record 模型上有一个字段,那么 Link.new(params[:link]) 应该可以解决问题,否则您需要定义一个方法 (def local_client_time =)在你的模型上,然后它将处理输入。

当然也会有一些日期管理服务器端,但这应该不会有太大问题。

关于javascript - 如何使用 javascript 以 Rails 形式获取本地时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25243240/

相关文章:

javascript - 提前将Vue组件转换为HTML

javascript - 如何构建 MustacheJS 模板以根据 JSON 文件中的值添加动态类?

ruby-on-rails - 在表单中将 bootstrap-datepicker-rails 添加到 date_select

jquery - 具有可扩展行的可排序表

ruby-on-rails - DataMapper:使用 auto_migrate!具有多对多依赖关系?

javascript - 函数外的 Javascript 中 `this` 的值是多少?

javascript - 在 foreach 方法中更新数组 Angular

ruby-on-rails - exception_notification gem 仅在 Heroku 生产模式下引发 ActionView::Template::Error (code converter not found (UTF-8 to UTF-16))

javascript - 即使没有嵌套路由,Ember Rails 后退按钮也不会渲染模板

sql - 索引名称太长 attachinary/postgresql