RoR - добавить контент по отношению к другой модели - PullRequest
0 голосов
/ 06 марта 2011

, поэтому у меня есть две модели с каждым контроллером:

Model Project has_many Themes

Model Theme belongs_to Project

в моем файле маршрутов я добавил resources :projects, а также для тем. Теперь я могу добавить проект с localhost/projects/new, который отлично работает, и я могу добавить темы с localhost/themes/new. Но это не так, как я хочу.

Я хочу добавить только темы, связанные с проектом. Какой лучший способ сделать это? Я пробовал что-то вроде этого: match "projects/:project_id/themes/new" => 'themes#new', :as => 'themes', который, кажется, работает, но после отправки моей новой формы ничего не происходит. новая форма отображается снова без сообщения об ошибке или чего-то в этом роде. мой тег формы в html отображается следующим образом:

<form accept-charset="UTF-8" action="/projects/3/themes/new" class="new_theme" id="new_theme" method="post">

У вас есть идеи, что пошло не так? Есть ли лучшая практика для чего-то подобного, потому что я думаю, что это часто востребованная модель.

Ответы [ 3 ]

2 голосов
/ 06 марта 2011

Вы хотите использовать вложенные ресурсы

resources :projects do
  resources :themes
end
0 голосов
/ 06 марта 2011

Вы также должны проверить https://github.com/josevalim/inherited_resources, что делает моделирование и реализацию этих маршрутов глупым простым.

0 голосов
/ 06 марта 2011

Эта ситуация называется вложенными ресурсами.

В ваших маршрутах определите:

resources :projects do
  resources :themes
end

Это создаст именно тот URL, который вы описали, а также набор вспомогательных методов.См. руководства по рельсам для получения полного списка, но вот пример:

Чтобы перейти к одной теме, вы должны использовать projects_theme_path(@project, @theme), или просмотреть все темы для проекта, который вы используетеprojects_themes_path(@project).Опять же, см. Руководства по рельсам для полного объяснения и всех помощников.

Кроме того, в любой момент вы можете запустить rake routes, чтобы увидеть вспомогательные методы EXACT в том виде, как они настроены для вашего проекта.

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