Как правильно настроить маршрут для передачи параметров? - PullRequest
0 голосов
/ 30 января 2011

Я пытаюсь отправить текущие параметры @calc в действие generate_csv.

Как передать параметры, чтобы я мог получить к ним доступ в действии generate_csv?

мой взгляд

- form_tag generate_csv_path(@calc) do
  = submit_tag 'Print CSV'

мои маршруты:

match '/generate_csv', :to => "main#generate_csv", :via => :post
resources :main

Что создает:

generate_csv POST   /generate_csv(.:format)  {:controller=>"main", :action=>"generate_csv"}

мой контроллер

def generate_csv
  ..

Альтернатива:

мой контроллер

def generate_csv(foobar)

мой взгляд

- form_tag generate_csv_path(@calc) do
  = submit_tag 'Print CSV'

ошибка

wrong number of arguments (0 for 1)

Как такое может быть, если я явно передаю ему параметр?Кажется, его не принимают.

Ответы [ 3 ]

2 голосов
/ 30 января 2011

Используйте link_to:

<%= link_to 'Print Csv', generate_csv_path(:id => @calc) %>

Но измените свой маршрут, если ваш параметр обязателен:

match '/generate_csv/:id', :to => "main#generate_csv"

Остальное:

match '/generate_csv/(:id)', :to => "main#generate_csv"
0 голосов
/ 30 января 2011

generate_csv_path(:calc => @calc) должен генерировать ссылку /generate_csv?calc=VALUE

В контроллере вы можете получить доступ к этому значению через хэш параметров params[:calc].

ps: Недавно у меня возникла проблема с хэшем params (ruby 1.9.2, rails 3.0.3), который не получил значение запроса от URL.У него были только значения контроллера и действия.Переключение с mongrel 1.2.rc на webrick сделало свое дело.

0 голосов
/ 30 января 2011

Я думаю, переменная params[:calc] должна помочь вам в контроллере. Также этот вопрос может вам помочь. В вашем представлении просто используйте обычные теги формы.

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