2010-04-27 25 views
29

ProblemVerschachtelte Ressourcen im Namensraum form_for

Der form_for Helfer bestimmt falsch den Pfad zu meiner verschachtelten Ressource innerhalb eines Namespace. Die fraglichen Modelle sind: Forum :: Thread und Forum :: Antworten bzw. in einem Unterordner namens "Forum" unter meinem Modellverzeichnis. Dies ist in Rails 3 BETA 3.

routes.rb

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

app/views/forum/Antworten/_form.html.haml

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

app/controllers /forum/replies_controller.rb

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

Fehler

undefined method `forum_thread_forum_replies_path' 

In Bezug auf die oben in _form.html.haml skizzierte Linie

Antwort

45

Editted Lösung bei Menschen nicht lesen, die Reaktionen:

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

Alte Antwort:

ich ein Projekt mit einem Admin-Namensraum haben und Menschen und Bilder Ressourcen, das ist die Art, wie ich meine form_for in rails3 bauen, habe ich nicht einen Weg nur noch zu tun, es sauberer ...

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

Wird diese Arbeit sowohl für das Hinzufügen und Bearbeiten? – nlaq

+0

Sicher, Sie müssen nur die URL auf den Update-Pfad ändern. – Bitterzoet

+0

Was erfordert, dass ich die URL in meine Form teilweise weitergeben ... Keine große Sache, aber es scheint, dass Sie das nicht tun sollten. – nlaq

2

gefunden @ Douglas: Es funktioniert nicht für mich. Aus meiner Sicht sollten die Namen in Routen plural sein. Wenn ich wie empfohlen zu tun, ist der Fehler:

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

Meine Lösung, die für New gearbeitet:

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

Meine Lösung, die für Bearbeiten gearbeitet:

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

Ist es eine Lösung für kombinieren Sie das in einer Form?

Edit (Lösung für eine neue verschachtelte Namespace Route in einer Form):
Nun hatte ich die folgende Logik in der routes.rb

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

Das Formular für new_mobile_user_candystore_transactions ist

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

, um an die create store :: TransactionsController create-Methode zu gelangen und nicht an die MobileUser create-Methode oder die Candystore :: TransactionsController-Aktualisierungsmethode.

2

In Rails 3 ist die einzige Lösung, die richtig für mich gearbeitet (sowohl für neue und bearbeiten Ressource) war:

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

Ich habe nach etwas gesucht, das das Gerüst _form teilweise so für immer fixiert! Vielen Dank! – nruth

+0

Nun, es ist effektiv das gleiche wie das Schreiben von form_for [: admin, @person, @image], da form_for intern url_for aufruft. –

Verwandte Themen