2012-09-07 29 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