2016-05-31 13 views
1

Ich habe Namespace-Controller Entities :: KundenModule Route in Rails mit form_for (@object)

class Entities::CustomersController < ApplicationController 
... 
end 

und Namespace Active Modell:

class Entities::Customer < Entities::User 

end 

in meiner routes.rb Datei ich habe:

resources :customers, module: :entities 

Das Modul: Entitäten ist da, weil ich keine Routen wie haben möchte:

/Einheiten/Kunden aber nur:

/Kunden.

Das Problem beginnt, wenn ich meine Form Rendering:

<%= simple_form_for(@customer) do |f| %> 
     <%= f.input :email %> 
     <%= f.input :password %> 
     <%= f.input :name %> 
     <%= f.button :submit %> 
<% end %> 

Dies wirft Fehler: nicht definierte Methode `entities_customer_path‘ für die Klasse ..

So ist der Fehler, dass Schienen denken, dass die Der korrekte Pfad ist mit Präfixentitäten.

Rake Routen geben Sie mir:

   Prefix Verb URI Pattern     Controller#Action 
     customers GET /customers(.:format)   entities/customers#index 
       POST /customers(.:format)   entities/customers#create 
    new_customer GET /customers/new(.:format)  entities/customers#new 
    edit_customer GET /customers/:id/edit(.:format) entities/customers#edit 
     customer GET /customers/:id(.:format)  entities/customers#show 
       PATCH /customers/:id(.:format)  entities/customers#update 
       PUT /customers/:id(.:format)  entities/customers#update 
       DELETE /customers/:id(.:format)  entities/customers#destroy 
+0

geben Sie bitte Ihre Routen für Kunden –

+0

Ressourcen: Kunden, Modul: Einheiten wie in der Beschreibung gesehen –

+0

Ich habe gemeint Ausgabe von 'rake routes' –

Antwort

2

Ok nach einiger kämpfen also habe ich eine Lösung für dieses Problem gefunden:

Die simple_form_for (@model) erzeugen Route mit Einheiten vorangestellt, da es doesn Ich weiß nicht, dass es einen Pfad in den Routen gibt.

Also in meinem _form teilweise musste ich Schienen manuell angeben, welche Route je nach action_name Hilfsmethode in meinem Teil zu verwenden.

<% 
case action_name 
    when 'new', 'create' 
    action = send("customers_path") 
    method = :post 
    when 'edit', 'update' 
    action = send("customer_path", @customer) 
    method = :put 
end 
%> 

<%= simple_form_for(@customer, url: action, method: method) do |f| %> 
     <%= f.input :email %> 
     <%= f.input :password %> 
     <%= f.input :name %> 
     <%= f.button :submit %> 
<% end %>