Проблема с несколькими ресурсами при создании доски объявлений - PullRequest
0 голосов
/ 01 мая 2011

Я работаю над доской объявлений для своего приложения, и у него есть три типичных ресурса, чтобы все это работало: Форумы, Темы и Сообщения. Маршруты определены так:

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 в такой настройке?

1 Ответ

0 голосов
/ 01 мая 2011

Когда вы пытаетесь "form_for ([@ forum, @topic, @post])", вы устанавливаете переменную @forum в контроллере?

...