- ПЕРЕСМОТРЕННЫЙ ОТВЕТ
Основываясь на комментариях, я вижу, что вы не пытаетесь связать модель контакта, просто представление. В этом случае вам все равно нужно изменить файл маршрутов, но вам нужно решить, хотите ли вы получить одну страницу контактов для всех проектов или одно представление контактов для каждого проекта. IE:
# Collection Contact
example.com/projects/contact # IE One contact view for all projects
# Member Contact
example.com/projects/1/contact # IE One contact view per project
В любом случае вам нужно использовать блок для ресурса проекта в файле маршрутов. Итак, если вы хотите, чтобы была одна контактная страница для коллекции (все проекты), выполните:
resources :projects do
collection do
get 'contact'
end
end
Или, если вы хотите, чтобы один просмотр контактов на одного участника (по одному на проект), выполните:
resources :projects do
member do
get 'contact'
end
end
В любом случае это даст вам вспомогательные методы, которые вы можете поместить в link_to
Для коллекции это должно быть contact_projects_path
(без аргументов), а для членов должно быть contact_project_path(@project)
(передать в качестве аргумента проект.
Вы можете использовать get
post
put
delete
или match
в качестве параметра в коллекции или блоке-члене, который просто сообщает Rails, какой тип запроса обрабатывать по этому URL, и какие помощники генерировать. Для нормального просмотра вам нужен запрос GET.
Надеюсь, это, наконец, ответит на ваш вопрос:)
-ОРИГИНАЛЬНЫЙ ОТВЕТ-
Это для маршрутизации на МОДЕЛЬ, а не только на представление
Добавить в ваши маршруты.rb:
resources :projects do
resource :contact
end
Если я правильно понимаю ваш вопрос, это должно создать помощника с именем project_contact_path ().
Эта запись будет projects/123/contact.
Если вам нужно более одного контакта на проект, вам нужно сделать его множественным (ресурс: контакты). Тогда ваши записи будут выглядеть как projects/123/contacts/123
.
См. http://guides.rubyonrails.org/routing.html
Вы бы связались с этим с помощью link_to( project_contact_path(@project) )
, если в проекте только один контакт, или link_to( project_contact_path(@project,@contact) )
, если в проекте несколько контактов.