2011-01-19 3 views
1

레일즈에서 을 실제로 수행하는 가장 좋은 방법은 제가하고 싶습니다.레일스가 URL의 형태로 포스트 매개 변수를 가진 URL로 리다이렉트하는 방법

내가 5 개 필드 (속성, 어린 양, 성인의 금액 2 날짜 - 출발 및 도착)과 함께 "예약 양식"이이 필드를 기반를, 나는 URL을 구성하고 사용자를 리디렉션합니다 이 URL. 이제 2 개의 질문이 있습니다.

<% form_tag(:action => "booking") do %> 

이 같은 컨트롤러 액션에 라우팅 : 나는 이 같은 행동 양식을 매핑이기 때문에 내가 컨트롤러에 POST 매개 변수를 잡을 방법

1) (페이지 컨트롤러 , 예약 조치)

match 'pages/booking' => 'pages#booking' 

2)이 실제로 그런 일을 달성 레일 방법이 있나요? 나는 PHP에서이 방법을 과거에했지만 지금은 레일에서 실제로하고 싶습니다. Rails Gurus가 저에게 영감을 줄 수 있습니까? 그런 것들에 대해 갈 수있는 가장 좋은 방법입니다

답변

3

컨트롤러의 매개 변수에 액세스하려면 POST 본문에 제출 된 매개 변수에도 마찬가지로 params 해시를 사용하십시오. 예 : params[:form_field]

컨트롤러를 사용하여 다른 URL로 리디렉션하려면 redirect_to을 사용하십시오. params의 값을 사용하여 URL을 구성한 다음 redirect_to에 전달할 수 있습니다.

0

당신은 수완 경로를 사용하는 경우, 당신은 전통적인 접근 방식을 통해 경로 일을합니다 :

resources :bookings 

는 그런 다음 bookings_path과에 양식을 게시 할 것 그게 모두 BookingsController#create입니다. 가능한 경우 모델과 컨트롤러간에 강력한 상관 관계를 갖는 것이 항상 좋습니다.

resourcesroutes.rb의 정의는 사용자가 만들 수있는 모든 기본 RESTful 동작을 만드는 데 도움이됩니다. 맞춤 경로가 정말로 필요한 경우 :as 옵션을 사용하여 이름을 바꾸거나 경로를 독립적으로 지정할 수 있습니다.

/pages/booking과 같은 임의의 경로를 만드는 경우 다른 사람이 유지해야하는 혼란을 야기 할 수 있습니다. 꽤 자주 다른 사람이 당신입니다.

+0

나는 이것을 모두 추가해야만하는 유일한 이유는 내가 정유소라고 불리는 Rails CMS를 사용하고 있기 때문이다.하지만 내 질문은 경로와 기타 등등에 관한 것이 아니라 오히려 최상의 것이다. 최적의) way/s를 사용하여 URL 구성을 처리하고 컨트롤러에서 리디렉션합니다. – Gotjosh

+0

질문에 명확하지 않았습니다. 당신이 PHP 방식으로하고있는 것처럼 들리 더 표준적인 방법이 있는지 알고 싶었습니다. 이론적으로 모든 일을 할 수있는 경우에도 가능한 한 가장 잘 준수하는 것이 컨벤션에 가깝습니다. 정규 액션으로 설정하면 일반적인'params' 해시로 모든 POST 변수를 처리 할 수 ​​있습니다. CMS를 사용하더라도 자신 만의 컨트롤러를 만들 수 있어야합니다. – tadman

관련 문제