сделать красивую ссылку с маршрутами. - PullRequest
1 голос
/ 21 июня 2011

Я хотел бы что-то сделать для этого, я считаю:

map.connect 'show/:company_name/:id',
            :controller => 'companies',
            :action     => 'show'

По сути, каждый раз, когда вызывается действие show, я бы хотел, чтобы он взял параметр company_name и поместил его в URL как таковой (show /: company_name /: id)

Однако, похоже, я использую старый (rails 2.x routing api) и не могу использовать map.connect без получения ошибки. Как я могу обновить это?

Есть ли способ сделать это с помощью "match"?

Спасибо!

===================

Это ошибка, которую я вижу, когда пытаюсь использовать map.connect:

undefined local variable or method `map' for #<ActionDispatch::Routing::Mapper:0x103757458>

Ответы [ 2 ]

4 голосов
/ 21 июня 2011

Я думаю, что на ваших маршрутах нет символа "/" в первой строке.Попробуйте это:

match '/show/:company_name/:id' => 'companies#show'

Вы можете проверить свой маршрут с помощью команды rake routes.

-

Кроме того, действие show является методом RESTful по умолчанию в Rails.,Я предлагаю вам изменить эквивалентное слово и зарезервировать действие "show" для будущей или другой ситуации.

В соглашении Rails вы можете написать resources :companies, и путь будет /companies/:id с использованием show action.

Некоторая настройка в app / models / company.rb

def to_param
  self.name
end

Так что ваш URL будет выглядеть как http://yourdoamin.com/companies/37signals.

в app / controllers / companies_controllerрб

@company = Company.find_by_name(params[:id])
0 голосов
/ 21 июня 2011

Если я понимаю вашу цель, попробуйте

match 'companies/show/:company_name/:id' => 'companies#show'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...