Как изменить маршрутизацию Rails с контроллера /: id на контроллер /: имя в Rails 3? - PullRequest
2 голосов
/ 14 июля 2010

Так же, как говорят в теме.Я хочу изменить стандартную маршрутизацию контроллера:: id на controller /: вместо этого в Rails 3. В Rails 2 вы использовали именованную маршрутизацию примерно так:

config / rout.rb

map.location 'location/:name', 
  :controller => 'your_controller', :action => 'your_action'

альтернативный именованный маршрут

map.location 'goto/:name', :controller => 'location', :action => 'your_action'

примеры спецификации URL в представлении

<%= link_to 'foo', location_url({:name => 'foo'}) %>
<%= link_to 'bar', location_path({:name => 'bar'}) %>

Ноя уверен, что есть другой (лучший) способ в Rails 3.

Ответы [ 4 ]

4 голосов
/ 13 августа 2011

Если: name является уникальным идентификатором объекта, вы можете https://github.com/norman/friendly_id для общей поддержки постоянной ссылки для ActiveRecord.

Просто указанным

has_friendly_id :name

вы получите автоматическую маршрутизацию, например

http://example.com/states/washington

вместо

http://example.com/states/4323454

0 голосов
/ 24 июля 2013

Если у вас есть location.name, вы можете связать его с ним следующим образом:

<%= link_to 'foo', location_path(location.name) %>

даст вам URL / местоположения /: имя

в отличие от

<%= link_to 'foo', location %> #same as <%= link_to 'foo', location_path(location) %>

, который даст вам / location /: id

0 голосов
/ 14 июля 2010

Попробуйте это:

match 'location/:name' => 'your_controller#your_action', :as => location
0 голосов
/ 14 июля 2010

Не уверен, но, возможно, это поможет вам.

соответствует 'user_delete /: name',: to => 'session # destroy'

это то же самое, что и

map.user_delete '/ user_delete /: name',: controller => 'session',: action => 'destroy'

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