이 분명히 작동하지 않습니다경로 도우미를 통해 매개 변수를 가장 쉽게 전달하는 방법은 무엇입니까?
redirect_to post_path(@post, :params => params)
레일 이후 경로 도우미는 (내가 읽은 어떤에서) 직접 PARAMS 해시를 설정하는 것을 허용하지 않습니다.
이 몇 가지 문제를 제기 할 수있었습니다 :
당신이 전달 될 수 있기 때문에redirect_to post_path(@post, params)
: 컨트롤러 : 동일한 컨트롤러로 이동하고 행동 할 행동의 매개 변수를뿐만 아니라, 당신은에서왔다. 이것은 종종 당신이 원하는 것이 아닙니다.
이 작동하지만, 그것은 많은 코드가 모든 (제외 컨트롤러 : 행동과) PARAMS을 설정하는 데 걸리는에서 복잡하기 때문에, 불충분 기존 PARAMS에 :
redirect_to post_path(@post, {:someparameter => params[:someparameter]})
그래서, 가장 간단하고 쉬운 방법은 무엇입니까?
이 기사를 올바르게 읽으면 레일 4 (http://tenderlovemaking.com/2014/06/02/yagni-methods-are-killing-me.html)에서 메모리 누수가 발생할 수 있다고 생각합니다. ''params'''에서'''to_hash'''로 해결할 수있을 것 같습니다. –
고마워, 그게 내가 깨닫지 못했던 매우 유효한 문제 야! 지금 코드를 업데이트했습니다. – Magne
실제로'.slice'는'.delete'처럼 params 해시를 변경하지 않는다는 것을 알았습니다. 그냥 새로운 해시를 반환합니다. 그래서 안전해야합니다. 내 대답에는'to_hash'를 포함시킬 것입니다. – Magne