我需要将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。意思是,不是将日期作为字符串传递(我想要的,所以我可以使用后者)它将“ - ”解释为操作并给出结果。
我能以任何方式纠正这个问题吗?
谢谢!
答案 0 :(得分:1)
也许用以下内容解析该字符串:
> DateTime.parse(params[:q]) # if params[:q] is a date
=> Mon, 20 Jan 2014 00:00:00 +0000
然后你可以适当地处理它。
答案 1 :(得分:0)
您是否尝试过strptime
DateTime.strptime("2014-01-20","%Y-%m-%d")
#=> #<DateTime: 2014-01-20T00:00:00+00:00 ((2456678j,0s,0n),+0s,2299161j)>
答案 2 :(得分:0)
我猜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 %>