url_for и по умолчанию маршрута в рельсах 3
-
24-10-2019 - |
Вопрос
У меня есть маршрут Rails, как:
match ':controller/:id/:action'
# match 'teams/:id' => "teams#show" # doesn't have any additional effect, which makes sense to me
resources :teams, :only => [:index, :show]
Таким образом, я могу сказать /teams/cleveland-indians
И это позвонит teams#show
с :id => 'cleveland-indians'
. Анкет Работает отлично. Моя проблема в том, что url_for
Не совсем делает то, что я хочу. В моих взглядах/командах/индексе, я получаю это поведение:
url_for(:id => "cleveland-indians") # => /teams/cleveland-indians/index
url_for(:id => "cleveland-indians", :action => :show) # => /teams/cleveland-indians/show
Конечно, этот второй ведет себя так, как я хочу, но я хотел бы избавиться от ненужного /show
в конце. Я мало что знаю о том, как работают эти помощники, но я бы догадался, что это знает, что show
Было ли действие по умолчанию для получения указанного идентификатора, так же, как и двигатель маршрутизации. В любом случае, как мне лучше всего позаботиться об этом? Или я просто делаю все неправильно?
Решение
Строка «Ресурсы» уже должна предоставить вам маршруты, которые вы, вероятно, хотите, чтобы вы могли просто удалить первую линию «совпадение».
Обратите внимание, что вы также можете использовать «teams_path», 'team_path ("cleveland-indians") "вместо" url_for ".