2012-02-21 87 views
0

我在我的控制器看起来像这样的搜索行动...Rails 3中,传递日期PARAMS到URL

def search 
@from_date = Date.new(params[:from_date][:year].to_i, params[:from_date][:month].to_i, params[:from_date][:day].to_i).to_s(:db) 
@to_date = Date.new(params[:to_date][:year].to_i, params[:to_date][:month].to_i, params[:to_date][:day].to_i).to_s(:db) 
@visits = Visit.search(from_date, to_date, current_user) 
    respond_to do |format| 
    format.html 
    end 

如果我把这个动作从这一观点也能正常工作..

<% form_tag "visits/search" do %> 
<p/> 
<%= 'Enter the dates to print' %> 
<p/> 
<%= select_date(Date.current, :order => [:month, :day, :year],  :prefix=>'from_date')  %> 
- to- 
<%= select_date(Date.current, :order => [:month, :day, :year], :prefix => 'to_date') %> 
<%= submit_tag "Show me Visits" %> 
<% end %> 

但是,我想创建一个与此视图的PDF,所以我需要将from_date和to_date传递到URL。要做到这一点,我使用的link_to声明...

<p><%= link_to "Print PDF", visits_search_path(format: 'pdf', from_date: @from_date, to_date: @to_date) %></p> 

这给了我一个很好的形成URL看起来像......

/visits/search.pdf?from_date=2011-09-22&to_date=2012-02-22 

但是当我点击这个链接,我得到的错误..

TypeError in VisitsController#search 

can't convert Symbol into Integer 

Rails.root: /home/jlocklear/railsApps/ezslp_w_prawn 
Application Trace | Framework Trace | Full Trace 

app/controllers/visits_controller.rb:104:in `[]' 
app/controllers/visits_controller.rb:104:in `search' 

任何想法?

回答

0

所以,问题是,我需要建立正确的PARAMS在我的link_to声明。而是使用类似

visits_search_path(格式: 'PDF',FROM_DATE:@from_date,TO_DATE:@to_date)

我真正需要的东西更像是...

> from_date.year,'from_date [month]'=> @ from_date.month,...)

我的解决方案最终以使用params.merge方法,在...

<p><%= link_to "Print PDF", visits_search_path(params.merge(format: 'pdf')) %></p> 

..这自动插入奇迹般地从控制器到PARAMS我的网址。