2013-01-25 3 views
2

레일 : 컨트롤러 # 쇼 a를 LINK_TO의 root_path에 대한 논리 나 : 다시는 사용자가 <code>new</code>><code>create</code> 행동을 통해 오는 <code>link_to root_path</code>한다면 그래서 나는 쇼 레이아웃 "OK"버튼 컨트롤러 번호를 설정하려면 어떻게

그러나

사용자가 이미 존재하는 리소스 목록 (사실 인덱스)을보고 컨트롤러 # show (세부 정보)를 보려면 클릭 한 다음 "확인"버튼을 클릭하면 이전 페이지 (색인)?

특정 컨트롤러 (이 컨트롤러 포함)에 대해 login_required을 처리하기 위해 store_locationredirect_back_or(default) 도우미 메서드를 사용하고 있습니다. 위의 문제를 해결하기 위해 채택 할 수 있습니까? 아니면 더 좋은 방법이 있습니까?

간단히 말해서 이전 동작이 create (또는 sign_in) 동작이 아니면 버튼이 link_to "OK", :back이되고 싶다고 생각합니다.

링크를 유지할 필요가 없으므로 session을 참여시켜야한다고 생각하지 않습니다. 인덱스에서 오는 경우에는 하나이고, 생성 또는 sign_in에서 오는 경우에는 또 다른 방법입니다.

답변

4

따라서 new>create 동작에서 사용자는 Controller#Show으로 리디렉션됩니다. 매개 변수를 매개 변수와 함께 전달할 수 있습니다. 예를 들어 다음과 같은 것을에 redirect_to을 수정할 수 있습니다

당신의 #Show 페이지에서 다음
<%= redirect_to show_path(:param1 => "true") %> 

, 당신이 작동

<% if !params[:param1].nil? and params[:param1] == true %> 
    <%= link_to "OK", root_path %> 
<% else %> 
    <%= link_to "OK", :back %> 
<% end %> 
+0

확인하실 수 있습니다 ... 감사합니다! *이 문제를 처리 할 다른 방법이 있는지 확인하기 위해 며칠 동안 질문을 남깁니다 ... * – Meltemi