2012-09-07 86 views
2

Rails的新手在這裏(試圖獲得這些問題的答案)導軌 - 路由錯誤的POST方法

我使用Ryan Bates的Rails的演員在妖獸嚮導形式來創建一個多步驟的形式。我得到一個「無路由匹配[POST] 「/ user_steps /性別」(其中性別是user_steps控制器下圖)

任何想法

的routes.rb:?

Store::Application.routes.draw do 

    resources :likes 

    resources :categories 


    resources :users 
    resources :user_steps 

    root to: 'static_pages#home' 

user_steps控制器:

class UserStepsController < ApplicationController 
    include Wicked::Wizard 
    steps :gender, :items, :brands, :final 

    def show 
     render_wizard 
    end 

    def update 
     @user.attributes = params[:user] 
     render_wizard 
    end 
end 

回答

3

當你定義一個新的方法,鐵軌將默認在該方法的GET請求。爲了使它成爲一個POST方法,嘗試添加

0。
match "user_steps/gender", to: "user_steps#gender", via: "post" 

退房this routes reference

+0

好極了,感謝您的幫助。我會盡快嘗試這個 – abhir

+0

這個工程 - 現在我得到了'沒有路由匹配{:controller =>「user_steps」,:action =>「show」,:id => nil}'user.id '沒有正確通過? – abhir

+0

您何時/在哪裏得到該錯誤?如果你也試圖通過get請求渲染局部,那麼你應該把'get'加到'via'散列 –

2

我找軌奇才解決方案,並正在經歷「#346嚮導形式與邪惡」,當我遇到了同樣的問題railscas。

正如@Klipfel所言,添加路線是一個很好的「鐵軌」答案,但對於邪惡的寶石來說卻不是正確的方法。如果添加指向另一個控制器方法的路由,則將請求路由到惡意框架之外。

我解決了這個問題,通過指定http方法。在#346嚮導形式與妖獸railscast情況下,它應該是這樣的:

<%= form_for @user, url: wizard_path, method: :put do |f| %> 

我不知道爲什麼它工作在railscast

+0

謝謝,我發現這個答案非常有幫助! – ARTLoe

+0

這是一個很好的答案,但我認爲在Rails 4.1+中它現在應該是method::patch(至少這就是我在路徑中看到的,這就是我在form_for中放置的並且它工作正常) – rmcsharry