Rails-POST方法的路由错误



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

我正在使用Ryan Bates的Rails Cast on Wicked Wizard Forms来创建一个多步骤表单。我得到了一个"No route matches[POST]"/user_steps/gender(其中gender是user_steps控制器下的视图)。

有什么想法吗?

routes.rb:

Store::Application.routes.draw do
  resources :likes
  resources :categories

  resources :users
  resources :user_steps
  root to: 'static_pages#home'

user_step控制器:

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

当您定义一个新方法时,rails将默认为该方法的get请求。为了使其成为一种后处理方法,请尝试添加

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

查看此路线参考

我正在寻找rails向导解决方案,当我遇到同样的问题时,我正在处理"#346 Wizard Forms with Wicked"railscas。

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

我通过为http方法指定put来解决这个问题。在#346带有Wicked railscast的向导表单的情况下,它看起来像这样:

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

我不知道为什么它在railscast 中工作

最新更新