2012-07-02 4 views
21

# Der Kontext

puts "I am learning Rails, building a simple forum application." 
puts "I am pretty satisfied to where I got so far but routes... " 
puts "...still figuring them out." 
puts "Been 2 days trying all sorts of things." 
puts "This is where I am now, and something is not working as expected." 
puts "Any help/pointers would be appreciated! :)" 

# Das Problem

puts "I want my forum's create path to be '/helpcenter' and not '/helpcenter/cat'." 
puts "When I access the form to create a new forum and I hit submit, " 
puts "the form post to '/helpcenter' correctly (firebuged)" 
puts "but I get the index, not the create!" 
puts "I even put debugger in my create action but it is not being called." 

# config/routes.rb

scope "/helpcenter" do 
    resources :cat, :controller => "forums", :as => :forums do 
    resources :topics , :controller => "forum_topics", :as => :topics 
    resources :posts, :controller => "forum_posts", :as => :posts 
    end 
end 

match "/helpcenter" => "forums#index", :as => :forums 
match "/helpcenter" => "forums#create", :via => :post, :as => :create_forum 

Ich hoffe, erklären dieses Problem ist in der Art, wie ich die Route erstellt habe. Ich habe viele verschiedene Dinge ausprobiert.Benutzerdefinierte POST Routen für Aktion erstellen nicht gefeuert

# _form.html.erb

<%= form_for(@forum) do |f| %> 
.... 
<% end %> 

I Standard form_for Helfer verwenden.

# Rake Routen für Foren

$ CONTROLLER=forums rake routes 
delete_forum GET /helpcenter/cat/:id/delete(.:format) forums#delete 
     forums GET /helpcenter/cat(.:format)   forums#index 
      POST /helpcenter/cat(.:format)   forums#create 
    new_forum GET /helpcenter/cat/new(.:format)  forums#new 
    edit_forum GET /helpcenter/cat/:id/edit(.:format) forums#edit 
     forum GET /helpcenter/cat/:id(.:format)  forums#show 
      PUT /helpcenter/cat/:id(.:format)  forums#update 
      DELETE /helpcenter/cat/:id(.:format)  forums#destroy 
     forums  /helpcenter(.:format)    forums#index 
create_forum POST /helpcenter(.:format)    forums#create 

Wir eindeutig eine Route für POST/Hilfe-Center zu sehen, die auf die erstellen Aktion der Foren-Controller binded wird.

# Logs

Started POST "/helpcenter" for 127.0.0.1 at 2012-07-02 12:25:00 -0400 
Processing by ForumsController#index as HTML 
    Parameters: {"utf8"=>"✓", "authenticity_token"=>"d5iVKCh234234=", "forum"=>{"name"=>"", "description"=>""}, "commit"=>"Save Changes"} 

Die Protokolle zeigt deutlich, ich/Support Line eine POST tue aber, dass es feuert den Index Aktion statt der Aktion erstellen up!

# Was mache ich falsch?

puts "Thanks!" 

Antwort

26

Ich denke, die Anfrage entspricht Ihre erste forums Route, da Sie keine HTTP-Methode angegeben haben. Dies sollte funktionieren:

match "/helpcenter" => "forums#index", :via => :get, :as => :forums 
match "/helpcenter" => "forums#create", :via => :post, :as => :create_forum 

Oder die Kurzversion:

get "/helpcenter" => "forums#index", :as => :forums 
post "/helpcenter" => "forums#create", :as => :create_forum 
2

Die erste Blick zeigt, dass ein POST gegen/Support Line geht die Regel für die # Indexanpassung Foren, die zuerst angetroffen wird, so dass das, was Sie erhalten

match "/helpcenter" => "forums#index", :as => :forums 
match "/helpcenter" => "forums#create", :via => :post, :as => :create_forum 

Was:

match "/helpcenter" => "forums#index", :via => :get, :as => :forums 
match "/helpcenter" => "forums#create", :via => :post, :as => :create_forum 
Verwandte Themen