Rails 3, передача параметров даты в URL - PullRequest
0 голосов
/ 21 февраля 2012

В моем контроллере есть поисковое действие, которое выглядит следующим образом ...

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

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'

Есть идеи?

1 Ответ

0 голосов
/ 24 февраля 2012

Таким образом, проблема заключалась в том, что мне нужно создать правильные параметры в моем операторе link_to.Вместо того, чтобы использовать что-то вроде

visit_search_path (формат: 'pdf', from_date: @from_date, to_date: @to_date)

Мне действительно нужно что-то более похожее на ...

visit_search_path ('from_date [год]' => @ from_date.year, 'from_date [месяц]' => @ from_date.month, ...)

Мое решение закончилось тем, что я использовал метод params.merge, как в ...

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

.., который автоматически вводит параметры из контроллера в мой URL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...