2

Rails 新手在这里(试图回答这些问题)

我正在使用 Ryan Bates 的 Rails Cast on Wicked Wizard Forms 创建一个多步骤表单。我得到一个“没有路线匹配 [POST]”/user_steps/gender”(其中性别是 user_steps 控制器下的一个视图)。

有任何想法吗?

路线.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
4

2 回答 2

5

当您定义一个新方法时,rails 将默认对该方法的获取请求。为了使其成为发布方法,请尝试添加

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

查看此路线参考

于 2012-09-07T04:37:34.473 回答
3

我正在寻找 Rails 向导解决方案,当我遇到同样的问题时,我正在浏览“#346 Wizard Forms with Wicked”railscas。

正如@Klipfel 所建议的那样,添加一条路线是一个很好的“轨道”答案,但对于邪恶的宝石来说不是正确的方法。如果您添加指向另一个控制器方法的路由,则您将请求路由到 wicked 框架之外。

我通过为 http 方法指定 put 解决了这个问题。在 #346 Wizard Forms with Wicked railscast 案例中,它看起来像这样:

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

我不确定为什么它在 railscast 中有效

于 2015-02-20T17:12:58.270 回答