2012-07-02 10 views
21

# Wyjaśniając kontekście

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! :)" 

# 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 

Mam nadzieję, że ten problem jest w taki sposób, w jaki stworzyłem trasę. Próbowałem wielu różnych rzeczy.trasy Niestandardowe stanowisko do tworzenia działań nie rozgrzana

# _form.html.erb

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

używam standardu form_for pomocnika.

# Rake Trasy dla Forum

$ 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 

Widzimy trasę dla POST/HelpCenter który zbindowanych do akcji tworzenia kontrolera forach.

# Logi

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"} 

dzienniki wyraźnie pokazuje robie post on/HelpCenter ale że odpala się na akcję index zamiast akcji Create!

# Co robię źle?

puts "Thanks!" 

Odpowiedz

26

Myślę, że zapytanie jest zgodne z pierwszą trasą forums, ponieważ nie określono metody HTTP. To powinno działać:

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

Albo skróconą wersję:

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

pierwszy rzut oka pokazuje, że PO przeciw/HelpCenter przechodzi regułę dla forów # meczu indeksu, który jest napotykanych pierwszy, więc to, co masz

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

Co o:

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