ruby on rails - formularios - Recursos anidados en el espacio de nombres form_for
ruby on rails formularios anidados (3)
@Douglas: No está funcionando para mí. En mi opinión, los nombres en las rutas deberían ser pluralizados. Cuando me gusta recomendado, el error es:
undefined method `admin_admin_person_admin_image_path'' for #<#<Class:0x55976d0>:0x55a9bc8>
Mi solución que funcionó para Nuevo:
form_for @image, url: admin_person_images_path(@person, @image)
Mi solución que funcionó para Editar:
form_for @image, url: admin_person_image_path(@person, @image)
¿Hay alguna solución para combinar esto en una forma?
Editar (Solución para una nueva ruta de espacio de nombres anidada en un formulario):
Ahora tenía la siguiente lógica en las rutas.rb
resources :mobile_users do
namespace :candystore do
resource :transactions
end
end
El formulario para new_mobile_user_candystore_transactions es
<%= form_for [@mobile_user], url: mobile_user_candystore_transactions_path(@mobile_user), method: :post do |f| %>
para acceder al método de creación de Candystore :: TransactionsController y no, por ejemplo, al método de creación de MobileUser o al método de actualización de Candystore :: TransactionsController.
Problema
Form_for helper determina incorrectamente la ruta a mi recurso anidado dentro de un espacio de nombres. Los modelos en cuestión son: Forum :: Thread y Forum :: Reply respectivamente, ubicados en una subcarpeta llamada "forum" en mi directorio de modelos. Esto está en Rails 3 BETA 3.
rutas.rb
namespace :forum do
root :to => ''threads#index''
resources :threads do
resources :replies
end
end
app / views / forum / replies / _form.html.haml
...
- form_for [@thread, @reply] do |f|
...
app / controllers / forum / replies_controller.rb
...
def new
@reply = Forum::Reply.new
end
...
Error
undefined method `forum_thread_forum_replies_path''
En referencia a la línea descrita anteriormente en _form.html.haml
En Rails 3, la única solución que me funcionó correctamente (tanto para los recursos nuevos como para los de edición) fue:
form_for @image, :url => url_for([:admin, @person, @image])
Solución editada en caso de que la gente no lea las reacciones:
<%= form_for [:admin, @person, @image] do |f| %>
Respuesta anterior:
Tengo un proyecto con un espacio de nombres de administrador y recursos de Personas e Imágenes, esta es la forma en que construyo mi form_for en rails3, todavía no he encontrado una manera de hacerlo más limpio ...
<%= form_for [@person, @image], :url => admin_person_images_path do |f| %>