POST-Anforderung in einem Namensraum-Ressourcen-Steuerung geht zu indizieren Aktion statt erstellen

StackOverflow https://stackoverflow.com/questions/210513

  •  03-07-2019
  •  | 
  •  

Frage

Ich habe einen Controller Namensraum für einige Admin-Funktionalität. Mein erstellen Formular funktioniert nicht - es endet anstelle der Aktion erstellen die Anforderung an den Index Aktion Routing nach oben.

Warum wird die POST an die erstellen Aktion geleitet zu werden, wie es soll (die RESTful)?

routes.rb:

  map.namespace :admin do |admin|
    admin.resources :events
  end

Rake Routen:

             admin_events GET    /admin/events                   {:action=>"index", :controller=>"admin/events"}
    formatted_admin_events GET    /admin/events.:format           {:action=>"index", :controller=>"admin/events"}
                               POST   /admin/events                   {:action=>"create", :controller=>"admin/events"}
                               POST   /admin/events.:format           {:action=>"create", :controller=>"admin/events"}
           new_admin_event GET    /admin/events/new               {:action=>"new", :controller=>"admin/events"}
 formatted_new_admin_event GET    /admin/events/new.:format       {:action=>"new", :controller=>"admin/events"}
          edit_admin_event GET    /admin/events/:id/edit          {:action=>"edit", :controller=>"admin/events"}
formatted_edit_admin_event GET    /admin/events/:id/edit.:format  {:action=>"edit", :controller=>"admin/events"}
               admin_event GET    /admin/events/:id               {:action=>"show", :controller=>"admin/events"}
     formatted_admin_event GET    /admin/events/:id.:format       {:action=>"show", :controller=>"admin/events"}
                               PUT    /admin/events/:id               {:action=>"update", :controller=>"admin/events"}
                               PUT    /admin/events/:id.:format       {:action=>"update", :controller=>"admin/events"}
                               DELETE /admin/events/:id               {:action=>"destroy", :controller=>"admin/events"}
                               DELETE /admin/events/:id.:format       {:action=>"destroy", :controller=>"admin/events"}

app / views / admin / events / new.html.erb:

<h1>New event</h1>

<% form_for([:admin, @event]) do |f| %>
  <%= f.error_messages %>
  ...

app / controllers / admin / event_controller.rb:

class Admin::EventsController < ApplicationController
  def index
    @events = Event.find(:all)
    ...
  end

  def create
    @event = Event.new(params[:event])
    ...
  end

  ...
end

Und schließlich ein bisschen einer Log-Datei, wo man sehen kann es in der Tat ist Posting:

Processing Admin::EventsController#index (for 127.0.0.1 at 2008-10-16 18:12:47) [POST]
  Session ID: ...
  Parameters: {"commit"=>"Create", "authenticity_token"=>"...", "action"=>"index", "controller"=>"admin/events", "event"=>{"location"=>""}}
  Event Load (0.000273)   SELECT * FROM `events` 
Rendering template within layouts/application
Rendering admin/events/index
Completed in 0.00757 (132 reqs/sec) | Rendering: 0.00118 (15%) | DB: 0.00027 (3%) | 200 OK [http://localhost/admin/events]
War es hilfreich?

Lösung

Die Reihenfolge der Routen war das Problem. Ich bin mir nicht ganz sicher, warum, aber es unter meiner Wurzelwege (map.connect '') löst das Problem, und Rails leitet die Anfragen entsprechend zu bewegen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top