Как передать параметр запроса по умолчанию с помощью Rails 2.3.x - PullRequest
0 голосов
/ 25 декабря 2010

Я пытаюсь сделать что-то тривиальное. У меня есть несколько URL-адресов, которые мне нужно сопоставить, как показано ниже:

http://example.com/foo
http://example.com/foo/something

Оба должны перейти к одному контроллеру / действию. У меня проблема, когда http://example.com/foo вызывается, мне нужно указать параметр запроса по умолчанию. Я думал, что это то, что делает хэш: defaults в rout.rb, но, к сожалению, следующее не работает:

map.connect 'foo', :controller => 'something', :action => 'anaction', 
  :defaults => { :myparam => 'foobar' }

Это должно перенаправить http://example.com/foo на контроллер что-то, действие действия и заставить params [: myparam] указывать на строку "foobar"

Я предполагаю, что для второго примера http://example.com/foo/something мне понадобится дополнительный маршрут.

Какой лучший способ справиться с этим?

Ответы [ 2 ]

3 голосов
/ 25 декабря 2010

Я бы не усложнил ситуацию, добавив такую ​​логику в мой файл маршрутов, я просто сделал бы это в своем действии:

params[:my_param] ||= 'foobar'
2 голосов
/ 25 декабря 2010

Не проверено, но:

map.connect 'foo', :controller => 'something', :action => 'anaction', :myparam => 'foobar'

Похоже, что аргументы :controller и :action здесь не являются какими-либо особыми, а просто заканчиваются подачей в params. Документация 2.3.8 , кажется, подтверждает это.

Более формально вы можете включить произвольные параметры в маршруте, таким образом:

map.connect ':controller/:action/:id', :action => 'show', :page => 'Dashboard'

Это будет передать параметр: page всем входящие запросы, которые соответствуют этому маршрут.

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