2

Railsの初心者はここにいます(これらの質問に答えてもらうようにしています)

RyanBatesのRailsCaston Wicked Wizard Formsを使用して、マルチステップフォームを作成しています。「[POST]に一致するルートがありません」/user_steps/genderが表示されます(ここで、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はデフォルトでそのメソッドのgetリクエストになります。postメソッドにするために、追加してみてください

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

このルートリファレンスをチェックしてください

于 2012-09-07T04:37:34.473 に答える
3

Railsウィザードのソリューションを探していて、同じ問題が発生したときに「#346 Wizard FormswithWicked」railscasを実行していました。

@Klipfelが示唆しているように、ルートを追加することは良い「レール」の答えですが、邪悪な宝石の正しいアプローチではありません。別のコントローラーメソッドを指すルートを追加すると、邪悪なフレームワークの外部にリクエストがルーティングされます。

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 に答える