2009-10-12 3 views
10

이 작동 큰 :레일 : form_for url에 여러 매개 변수 전달?

- form_for @user, :url => { :action => :create, :type => @type } do |f| ... 

반환

/users/(id)?type=type 그러나 다른 관점에서 나는 URL 문자열로 두 매개 변수를 전달해야하고,이 작동하지 않습니다

- form_for @user, :url => { :action => :update, :type => @type, :this => @currently_editing } do |f| ... 

반환 /users/(id)?this=currently_editing

나는 또한 시도했다 :

- form_for @user, :url => { :action => :update, :params = params.merge({:this => @currently_editing, :type = @type})} do |f| ... 

... 운이 없음 (오류 : GET 요청 만 허용). /users/(id)?this=currently_editing&type=type

생각 : 그것은이를 반환하는

는 내가 원하는 것은?

답변

25

왜 URL 문자열에 전달해야합니까? 왜 양식에 숨겨진 필드로 추가하지 않습니까? 대부분의 경우 POST와 함께 변수를 전달해야합니다.

+0

게시 된 모델의 일부가 아닌 매개 변수에 대해 숨겨진 필드가 작동합니까? – Blake

+0

숨겨진 필드를 양식에 추가 할 수는 있지만 form_for 헬퍼를 사용할 필요는 없습니다. – scottd

-3

내가 원하는 쿼리 문자열이 외부 속성을 이동하는 생각이 같은 URL 옵션 :

form_for @user, :url => { :action => :update }, :type => @type, :this => @currently_editing do |f| 
+0

Nope. 그런 식으로 작동하지 않습니다. – Jim

+3

맞아 ... 그런 식으로 작동하지 않습니다. – rswolff

1

내가 숨겨진 필드를 사용하는 것이지만,이 작업을해야합니다

<% form_for @user, :url => user_path(@user.id, :type => @type, :this => @currently_editing), :method => :put do |f| -%> 

:method => :put 트리거를 RESTful 라우트를 사용할 때 갱신 조치.

0

이 시도하십시오

이 방법으로 하나 이상의 매개 변수를 전달할 수 있습니다.

- form_for @user, :url => xxx_yyy_path(:param1 => value1, :params2 => value2, ......) do |f| ...