2012-09-07 3 views
2

레일 초보자에 대한 오류 라우팅 내가 여러 단계의 양식을 작성하는 사악한 마법사 양식에 캐스트 라이언 베이츠 '레일을 사용하고레일 - POST 메소드 여기

(이 질문에 대한 답변을 얻을려고). 나는 (성이 user_steps 컨트롤러 아래의보기이다)는 "아니오 경로 일치 [POST]"/ 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 요청을 기본값으로 그것을 포스트 방법을 만들기 위해,

0을 추가하려고
match "user_steps/gender", to: "user_steps#gender", via: "post" 

체크 아웃 this routes reference

+0

환상적인 railscast에 감사를 작동하는 이유. 나는 이것을 무언가로 시도 할 것이다 – abhir

+0

이것은 작동한다 - 지금 나는 '경로 일치 {: controller =>'user_steps ', : action => "show", : id => nil} '제대로 전달되지 않았습니까? – abhir

+0

언제 어디서 그 오류가 발생합니까? get 요청을 통해 부분을 렌더링하려고 시도하는 경우'via' 해시에'get'을 추가해야합니다. –

2

I 레일을 찾고하는 솔루션을 마법사와 "사악한와 # 346 마법사 양식"을 통해가는 저도 같은 문제로 실행했을 때 railscas입니다.

@ Klipfel이 제시 한 것처럼 경로를 추가하는 것은 좋은 "레일스"답변이지만 사악한 보석에 대한 올바른 접근 방법은 아닙니다. 다른 컨트롤러 메소드를 가리키는 라우트를 추가하면 사악한 프레임 워크 외부로 요청을 라우팅합니다.

http 메서드에 put을 지정하여이 문제를 해결했습니다. 사악한 railscast 케이스와 # 346 마법사 양식에서 그 결과는 다음과 같습니다

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

잘 모르겠어요가 도움을,

+0

감사합니다.이 답변이 매우 유용하다는 것을 알았습니다! – ARTLoe

+0

이것은 좋은 대답이지만 레일스 4.1+에서는 메소드 : : patch (적어도 경로에서 볼 수있는 것이고 이것이 내가 form_for에 넣은 것입니다. – rmcsharry