Как настроить частично вложенные ресурсные маршруты? - PullRequest
0 голосов
/ 16 ноября 2011

На моем сайте Rails пользователи публикуют Listings товаров, которые они хотят продать. Другие пользователи могут просмотреть эти списки и щелкнуть ссылку, чтобы связаться с продавцом, которая должна создать MessageThread:

# MessageThread properties...
listing_id
poster_id # (listing_id's owner.. this is a shortcut for to avoid joins on the database)
sender_id
body # (text of message)

MessageThreads никогда не создаются вне контекста Listing, поэтому я вложил их находчивые маршруты. Тем не менее, им не нужен контекст Listing для просмотра / редактирования после их создания ... он необходим только для действий new и create. Я настроил это так:

resources :message_threads, :only => [:show, :destroy]

resources :listings do
   resources :message_threads, :only => [:new, :create]
end

Я не могу понять синтаксис form_for в представлении действий new для MessageThreadsController ... Я делаю form_for @message_thread, но это не работает. Это правильный способ настроить этот объект? Следует ли мне избегать использования ресурсоемких маршрутов или, возможно, передавать идентификатор листинга в качестве параметра в URL-адресе вместо того, чтобы вкладывать маршруты? Или всегда ссылаться на message_thread под списком?

1 Ответ

1 голос
/ 16 ноября 2011

Это должно работать:

form_for @message_thread, :url => listing_message_threads_path(@listing)

Вы всегда можете запустить это в командной строке

rake routes | grep message_thread

Новая ссылка будет

new_listing_message_threads_path(@listing)
...