簡體   English   中英

Ruby on Rails-將日期從text_field傳遞到控制器

[英]Ruby on Rails - Passing date from text_field to controller

我需要將日期從text_field發送到控制器。 以為我有這個

<%= link_to 'Click me', :url => {:controller => 'test', :action => 'action', :submit => 'field_to_submit', :method => :post, :remote => true} %>

<%= form_tag(my_path, :method => "get") do %>
    <%= label_tag(:q, "Choose date:") %>
    <%= text_field_tag(:q) %>
    <%= submit_tag("New Date") %>
<% end %>

在控制器中,我有這個:

def action
    if(params.has_key?(:q))
      @temp=params[:q]
    end
...

問題是,如果我將例如2014-01-20放在text_field中,我將在@temp變量中得到1993。 意思是,不是將日期作為字符串傳遞(我想要的,因此我可以稍后使用它),而是將“-”解釋為一個運算並給出結果。

有什么辦法我可以糾正嗎?

謝謝!

也許用以下方式解析該字符串:

> DateTime.parse(params[:q]) # if params[:q] is a date
=> Mon, 20 Jan 2014 00:00:00 +0000 

然后,您可以適當地處理它。

您是否嘗試過strptime

DateTime.strptime("2014-01-20","%Y-%m-%d")
#=> #<DateTime: 2014-01-20T00:00:00+00:00 ((2456678j,0s,0n),+0s,2299161j)>

我猜ERB正在評估提供的字符串,然后將其發送到控制器,因此您可以嘗試以下操作:

<%= link_to 'Click me', :url => {:controller => 'test', :action => 'action', :submit =>     'field_to_submit', :method => :post, :remote => true} %>

<%= form_tag(my_path, :method => "get") do %>
  <%= label_tag(:q, "Choose date:") %>
  <%= text_field_tag(:q).to_s %>
  <%= submit_tag("New Date") %>
<% end %>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM