Domanda

Credo che sto pensando di routing tutto sbagliato. Ho un molto semplice, due modelli di set-up: Prodotto e foto. has_many prodotto: foto, e foto belongs_to:. prodotto

Il prodotto ha un ponteggio completo mentre Photo ha una photos_controller che sto lavorando su.

In routes.rb abbiamo:   resources :products (generato dal patibolo)

Come foto sono una risorsa nidificato di un prodotto che ha cambiato questo:

resources :products do
    resources :photos
  end

e infine

root :to => "products#index"

Fortunatamente rastrello rotte sputa fuori:

  products GET             {:controller=>"products", :action=>"index"}
  products POST            {:controller=>"products", :action=>"create"}
  new_product GET          {:controller=>"products", :action=>"new"}
  edit_product GET         {:controller=>"products", :action=>"edit"}
  product GET              {:controller=>"products", :action=>"show"}
  product PUT              {:controller=>"products", :action=>"update"}
  product DELETE           {:controller=>"products", :action=>"destroy"}
  product_photos GET       {:controller=>"photos", :action=>"index"}
  product_photos POST      {:controller=>"photos", :action=>"create"}
  new_product_photo GET    {:controller=>"photos", :action=>"new"}
  edit_product_photo GET   {:controller=>"photos", :action=>"edit"}
  product_photo GET        {:controller=>"photos", :action=>"show"}
  product_photo PUT        {:controller=>"photos", :action=>"update"}
  product_photo DELETE     {:controller=>"photos", :action=>"destroy"}
  products GET             {:controller=>"products", :action=>"index"}
  products POST            {:controller=>"products", :action=>"create"}
  new_product GET          {:controller=>"products", :action=>"new"}
  edit_product GET         {:controller=>"products", :action=>"edit"}
  product GET              {:controller=>"products", :action=>"show"}
  product PUT              {:controller=>"products", :action=>"update"}
  product DELETE           {:controller=>"products", :action=>"destroy"}
  root                     {:controller=>"products", :action=>"index"}

il che significa che la forma in prodotti / nuova volontà POST ai prodotti # creano che voglio quindi reindirizzare alle foto # nuovi e hanno un modulo per caricare i product_photos generati dal corrispondente foto / new.html.erb che posterò alle foto # crea, giusto?

in product_controller.rb:

def create
    @product = Product.new(params[:product])

    respond_to do |format|
      if @product.save
        redirect_to new_product_photo_path, :notice => 'Product was successfully created.'
      else
        render :action => "new"
      end
    end
  end

ed in photos_controller.rb (per ora):

def new
    @photo = Photo.new
  end

Allora perché oh perché oh perché ottengo:

Routing Error

No route matches {:controller=>"photos", :action=>"new"}

quando rake routes chiaramente dice che fanno, ho un photos_controller, una nuova azione nel photos_controller e new_product_photo_path è chiaramente chiede di andare nel modo giusto? (Ho anche una foto / new.html.erb che ha una semplice <h1>Photos</h1> di qualcosa da rendering).

posso solo concludere che sto pensando a questo tutto il modo sbagliato, o che ho fatto un errore nella convenzione sulla configurazione che non riesco a vedere.

Chiunque?

Grazie e Cordiali saluti, Adam

È stato utile?

Soluzione

risposta Aggiornato:

Utilizzando un mezzo di risorse nidificati (in questo caso) che è possibile creare solo una nuova foto nel contesto di un prodotto. Ciò significa che l'applicazione è di sapere quale prodotto la foto deve essere creato appartiene.

Nel caso del vostro reindirizzamento Questo significa che dovete aggiungere il prodotto oggetto come parametro new_product_photo_path:

redirect_to new_product_photo_path(@product)

risposta originale:

Questo è perché hai fatto una risorsa nidificato. /products/1/photos/new probabilmente funziona. Se si vuole essere in grado di creare nuove foto via /photos/new troppo, è necessario aggiungere una risorsa 'unnested' troppo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top