Syl*_*lar 2 ruby ruby-on-rails momentjs reactjs ruby-on-rails-5
你如何格式化moment()到Rails日期时间?
我使用react-datepicker和Rails 5作为后端.
阵营:
let newDate = this.state.startDate.format('YYYY-MM-DD HH:mm')
console.log(newDate); #=> 2016-10-11 08:46
Run Code Online (Sandbox Code Playgroud)
看看momentjs格式,我看不到rails datetime格式,即:Mon, 10 Oct 2016 15:16:29 UTC +00:00
其目的是通过newDate为params一个轨道控制器:params[:new_date]
更新:
cema-sp的回答是我答案的最后一部分,但我收到了错误.要解决这个问题:
# JS:
let newDate = this.state.startDate.format(); # no format type
# Controller:
DateTime.strptime(params[:new_date], '%Y-%m-%dT%H:%M:%S%z')
Run Code Online (Sandbox Code Playgroud)
moment.js对象newDate可以用你喜欢的任何字符串格式化(例如像问题YYYY-MM-DD HH:mm或默认格式)并发送到服务器:
const newDate = this.state.startDate.format()
...
fetch(apiEndpointUrl, {
method: 'POST',
body: JSON.stringify({
new_date: newDate,
})
}).then(...)
...
Run Code Online (Sandbox Code Playgroud)
唯一的问题是你必须解析params[:new_date]Rails后端.
使用简单的DateTime类parse方法或更高性能strptime(提供选择格式).
如果要更新模型,可以使用setter方法:
def new_date=(value)
parsed = if value.is_a? String
DateTime.parse(value)
# Or more performant
# DateTime.strptime(value, '%Y-%m-%dT%H:%M:%S%z')
else
value
end
write_attribute(:new_date, parsed)
end
Run Code Online (Sandbox Code Playgroud)
如果需要在控制器中使用日期,只需使用DateTime方法之一解析它:
new_date = DateTime.parse(params[:new_date])
# Or
new_date = DateTime.strptime(params[:new_date], '%Y-%m-%dT%H:%M:%S%z')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2938 次 |
| 最近记录: |