【问题标题】:Rails 3, Passing date params to urlRails 3,将日期参数传递给 url
【发布时间】:2012-02-21 16:29:43
【问题描述】:

我的控制器中有一个如下所示的搜索操作...

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'

有什么想法吗?

【问题讨论】:

    标签: ruby-on-rails-3


    【解决方案1】:

    所以问题是我需要在我的 link_to 语句中构建正确的参数。而是使用类似

    visits_search_path(格式:'pdf',from_date:@from_date,to_date:@to_date)

    我真的需要更类似于...的东西

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

    我的解决方案最终是使用 params.merge 方法,如...

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

    ..它会自动将控制器中的参数插入到我的网址中。

    【讨论】:

      猜你喜欢
      • 2015-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-25
      相关资源
      最近更新 更多