Rails: правильная маршрутизация для ресурсов пространства имен - PullRequest
6 голосов
/ 08 апреля 2009

Если вы добавите карту ресурсов в пространство имен в routes.rb в Rails 2.3, как вы заставите link_toform_for и т. Д.) Понять, что он должен получить контроллер пространства имен вместо одного в корне Пространство имен?

Например ...

С этим в routes.rb:

map.namespace :admin do |admin|
  admin.resources :opt_in_users
end

И это в представлении:

<%= link_to @anOptInUser %>

Что link_to должен использовать link_for_admin_opt_in_user, но вместо этого он пытается использовать link_for_opt_in_user, что не получается.

Ответы [ 4 ]

7 голосов
/ 28 мая 2009

С ресурсами пространства имен, как и с вложенными ресурсами, вы можете использовать массив с символом:

link_to 'Click here', [:admin, @opt_in_user]

или

form_for [:admin, @opt_in_user] do |form| ....
2 голосов
/ 08 апреля 2009

документы rails для url_for указывают, что вам придется вызывать это явно:

Если вы вместо хеша пропустите запись (например, активная запись или активная Ресурс) в качестве параметра параметров, Вы будете запускать названный маршрут для эта запись. Поиск произойдет на Название класса. Так прохождение Объект мастерской попытается использовать маршрут семинара. Если у тебя есть вложенный маршрут, такой как admin_workshop_path вам придется называть это явно (это невозможно для url_for угадать этот маршрут).

(из http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#M001564)

0 голосов
/ 09 апреля 2009

Использование:

link_to '...', admin_opt_in_user_path(@anOptInUser)

Для коллекции:

admin_opt_in_users_path

Вы также можете добавить изменения и новые префиксы.

Когда вы используете form_for, обязательно передайте admin_opt_in_users_path для нового действия и admin_opt_in_user_path (@anOptInUser) для действия редактирования.

0 голосов
/ 09 апреля 2009

Rails может принимать массив объектов, которые затем отображаются в именованный маршрут

например. <% = link_to @ comment.title, [@article, @comment]%>

Вы получите ссылку на /articles/@article.to_param/comments/@article.to_param

Может использоваться в form_for и других местах

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