Подтвердить что ты не робот

Вложенные ресурсы в пространстве имен form_for

Проблема

Помощник form_for неверно определяет путь к моему вложенному ресурсу внутри пространства имен. Рассматриваемые модели: Форум:: Тема и Форум:: Ответить, соответственно, находятся в подпапке под названием "форум" в моей директории моделей. Это находится в Rails 3 BETA 3.

routes.rb

  namespace :forum do
    root :to => 'threads#index'
    resources :threads do
      resources :replies
    end
  end

приложение/просмотров/форум/ответы/_form.html.haml

...
  - form_for [@thread, @reply] do |f|
...

приложение/контроллеры/форум/replies_controller.rb

...
  def new
    @reply = Forum::Reply.new
  end
...

Ошибка

undefined method `forum_thread_forum_replies_path'

В отношении строки, указанной выше в файле _form.html.haml

4b9b3361

Ответ 1

Отредактированное решение, если люди не читают реакции:

<%= form_for [:admin, @person, @image] do |f| %>

Старый ответ:

У меня есть проект с админ-пространством имен и ресурсами People и Images, так я строю свой form_for в rails3, я еще не нашел способ сделать это чище...

<%= form_for [@person, @image], :url => admin_person_images_path do |f| %>

Ответ 2

@Дуглас: Это не работает для меня. На мой взгляд, имена в маршрутах должны быть множественными. Когда мне это нравится, ошибка следующая:

undefined method `admin_admin_person_admin_image_path' for #<#<Class:0x55976d0>:0x55a9bc8>

Мое решение, которое работало для New:

form_for @image, url: admin_person_images_path(@person, @image)

Мое решение, которое работало в Edit:

form_for @image, url: admin_person_image_path(@person, @image)

Есть ли какое-нибудь решение объединить это в одной форме?

Изменить (решение для нового вложенного маршрута с именами в форме):
Теперь у меня была следующая логика в маршрутах. Rb

resources :mobile_users do
 namespace :candystore do
  resource :transactions
 end
end

Форма для new_mobile_user_candystore_transactions

<%= form_for [@mobile_user], url: mobile_user_candystore_transactions_path(@mobile_user), method: :post do |f| %>

чтобы перейти к способу создания Candystore:: TransactionsController, а не к способу создания MobileUser или методу обновления Candystore:: TransactionsController.

Ответ 3

В Rails 3 единственное решение, которое работало для меня правильно (для нового и для редактирования ресурса):

form_for @image, :url => url_for([:admin, @person, @image])