Я работаю над доской объявлений для своего приложения, и у него есть три типичных ресурса, чтобы все это работало: Форумы, Темы и Сообщения. Маршруты определены так:
resources :forums do
resources :topics do
resources :posts
end
end
Темы имеют сообщения, определенные как вложенный ресурс, например, когда вы создаете новую тему, создается новая запись, чтобы начать цепочку. Так что все работает хорошо. Но я застрял на странице «Показать» темы. На этой странице, как и в любой модели доски объявлений, после отображения всех сообщений внизу есть форма для добавления нового сообщения / ответа. Как только действие создания сообщения инициировано, оно будет перенаправлено назад к теме и т. Д. Реализация этой формы - это то, к чему я споткнулся.
Обычно я думаю о чем-то вроде этого ...
<%= form_for([@topic, @post]) do |f| %>
...
<% end %>
... только страница возвращает ошибку "undefined method` topic_posts_path '". И это не удивительно, поскольку просмотр маршрутов рейка возвращает это как действие создания для Posts.
forum_topic_posts POST /forums/:forum_id/topics/:topic_id/posts(.:format) {:controller=>"posts", :action=>"create"}
подумал, что я бы попытался <% = form_for ([@ forum, @topic, @post]) сделать | f | %> в form_for, но только что вернул мне ту же ошибку. Решив, что вместо этого мне нужно указать фактический путь, я дал <% = form_for: url => forum_topic_posts_url do | f | %> попытка, но это тоже не волновало.
После поиска в Google большинство учебных пособий на форумах устарели или перестали добавлять форму новых сообщений на странице темы, показывая только почти все, что я уже разработал.
Единственное, что мне удалось найти, - это не вкладывать ресурсы на три или более уровня вниз, а останавливаться на «почему», а тем более предлагать подходящую альтернативу. Кроме того, вышеуказанный маршрут кажется наиболее логичным путем для такого рода действий.
Итак, как мне добиться, чтобы форма Post работала на странице Topic Show в такой настройке?