2009-11-13 2 views
10

우리는 Rails 업그레이드로 인해 redirect_to break를 사용하고 있는데 문제가 발생했습니다. 나는 실험을 해왔고 redirect_to를 사용하여 수동으로 URL 문자열을 생성하는 것 외에는 쿼리 매개 변수가 추가 된 Rails가 아닌 페이지로 사용자를 보내는 방법을 찾지 못하는 것 같습니다. 이전에 단순한 것 :redirect_to를 Rails가 아닌 URL에 쿼리 매개 변수와 함께 사용하는 방법은 무엇입니까?

redirect_to "http://www.web.com/myurl" "parm" 

- URL에 "parm"을 추가하고 여러 개의 parms이 올바르게 처리되었습니다. 더 이상 그런 경우가 아니므로이 작업을 수행하는 새롭고 더 좋은 방법이 있는지 궁금합니다. 문서는 해시를 포함하여 작동해야한다고 암시하지만 그렇지 않습니다.

redirect_to ("http://www.web.com/myurl", :parm => "foo") 
redirect_to ("http://www.web.com/myurl", { :parm => "foo" }) 

어느 하나도 작동하지 않습니다. URL 문자열을 수동으로 작성하는 것이 좋지만이 작업을 더 멋진 방법으로 만드는 사람이 누구입니까?

답변

3

documentation에 따르면 url_for으로 인식되지 않는 매개 변수는 Route 모듈로 전달되므로 이론적으로 매개 변수가 찾은 기본 매개 변수 중 하나를 재정의하지 않으면 코드가 작동합니다. 이 도움이

redirect_to 'http://www.web.com/myurl', :overwrite_params => { :parm => 'foo' } 

희망 :

그러나 가정으로 전달할 수있는 :overwrite_params 해시가있다.

+0

이것은 작동하지 않습니다. 문자열이 직접 사용됩니다. – deepak

+0

@deepak 어떤 레일 버전을 사용하고 있습니까? 상황이 2009 년 이후로 변경되었을 가능성이 아주 높습니다. :-) –

+1

은 레일즈에서 3.2.8을 시도했으며, 가장 안정적인 시스템은 – deepak

0

이 가장 간단한 솔루션으로 레일 5.0을 실행하고 발견

args = { foo: 'bar' } 
redirect_to 'https://otherwebsite.com/path?' + args.to_query 

내가 호스트를 지정할 때 일이 페이지에있는 유일한 솔루션 (자신의 게시물에 토퍼 판지오의 의견을 참조) 그러나 원래 URL이 다른 포트에있는 경우 (일반적으로 dev 환경의 경우) 포트를 지정해야합니다.

관련 문제