Как избежать сокращения ссылок на map.root? - PullRequest
1 голос
/ 31 марта 2010

У меня есть контроллер отчетов и различные отчеты:

http://localhost/reports/main/this_month
http://localhost/reports/main/last_month
http://localhost/reports/main/this_year

Я хотел http://localhost по умолчанию http://localhost/reports/main/this_month. Это достаточно просто, используя map.root в моем rout.rb.

Однако, когда я делаю это, любые ссылки на http://localhost/reports/main/this_month теперь сокращаются до http://localhost. Я хочу, чтобы ссылки оставались полными

Ответы [ 3 ]

2 голосов
/ 31 марта 2010

Я думаю, что это очень возможно в Rails 2. Сгенерированная строка URL-адреса зависит от того, какой URL-помощник вы вызываете в своем представлении.

map.reports '/reports/:action/:timeframe', :controller => :reports
# todo pretty this up with some more named routes for reports
map.root :controller => "reports", :action => "main", :timeframe => "this_month"

Теперь root_url будет http://locahost/. Когда вы используете reports_url(:action => 'main', :timeframe => 'this_month'), это будет http://localhost/reports/main/this_month. Они оба оказывают одно и то же действие.

Звучит так, как будто вы настроили рут, но просто не создавайте никаких ссылок с root_url.

1 голос
/ 31 марта 2010

Одним из вариантов является использование фиктивного контроллера, который делает redirect_to.

Маршруты:

map.reports '/reports/:action/:timeframe', :controller => :reports

# this triggers the action 'index' on 'welcome'
map.root :controller => "welcome"

А затем на контроллере приветствия:

class WelcomeController < Application: ApplicationController
  def index
    redirect_to :controller => "reports", :action => "main", :timeframe => "this_month"
  end
end
0 голосов
/ 31 марта 2010

Насколько я знаю, это невозможно в Rails 2 по умолчанию. Существует плагин под названием Redirect Routing , который позволит, однако, это, что вы можете посмотреть. В Rails 3 эта функциональность встроена. Вы можете прочитать об этом в Описание путей в Rails 3 на Engine Yard.

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