2011-02-25 2 views
0

그래서 Exam 컨트롤러가 있습니다. 이제 파일에는 jqgrid (index.html.erb)가 있습니다. 하나는 그리드 행을 클릭하고 나는 이벤트를 처리하기위한 자바 스크립트를 올렸다. 이컨트롤러의 레일즈 동작에서 새 브라우저 탭 열기

<script type= "text/javascript"> 
function handleSelection(id) { 
    <%= 
    remote_function :url => render_exam_exams_path,:with => "'id='+id" 
    %> 
} 
</script> 

처럼 보이는 지금 난 그냥 같이 테스트 한 방법은

def render_exam 
    @exams = Exam.find(params[:id]) 
    #either 
    #redirect_to home_index_path 
    #or open this in new browser tab   
    #render :action => "render_exam" 
end 

다음 나는뿐만 아니라보기라는 render_exam 있습니다. 이제는 서버 로그를 모두 확인 했으므로 chrome 개발자 플러그인에서 볼 수 있듯이 render_exam이 생성 되어도 모든 것이 잘 작동합니다. 이제 문제는 내가 중 하나

  1. 컨트롤러 액션 render_exam 새 탭을 열고이있는 jqGrid 페이지를 변경하지 않고 원격으로 (생성 render_exam보기 및 전체)이 일어나고있는 것 같다으로 render_exam보기를 렌더링 할 수 있습니다. 그러나 새로운 브라우저 탭을 열어 장면 뒤에서 일어나는 것보다는 render_exam 액션 뷰에서 render_exam 액션 뷰를 렌더링하는 방법을 찾지 못했습니다. 또는
  2. 에는 render_exam보기로 리디렉션 된 jqGrid (또는 인덱스보기) 페이지가 있습니다. 이제 문제는 redirect_to 액션이 컨트롤러 메소드로 간주되기 때문에 뷰에서 작동하지 않는다는 것입니다. 그래서 나는 말할 수 없다.
    <script type= "text/javascript"> 
    function handleSelection(id) { 
        <%= redirect_to :action => render_exam_exams_path, :with => "'id='+id" %> 
    } 
    </script> 
    


그렇지 않으면 문제가 해결 된 것입니다. 도움이 필요합니다. 감사합니다.

+0

안녕하세요. – Zepplock

답변

0

먼저 작업 당 하나의 응답 만 있기 때문에 동일한 작업으로 리디렉션하고 렌더링 할 수 없습니다. 두 번째 탭을 새로 열면 클라이언트 측 기능 (브라우저가 제어 함)입니다. ""target = _blank와 같은 링크를 사용해야합니다. 새 브라우저가 열리면 페이지가 요청됩니다 (render_exam_exams_path) 서버에서.

+0

안녕하세요, 회신 해 주셔서 감사합니다. 컨트롤러 동작 render_exam에서 새 탭을 열고 동작을 렌더링하고 싶습니다. 짝수가 처리되고 동일한 시험 컨트롤러의 색인 페이지에서 원격으로 render_exam이 전송되었습니다. 또는 적어도 사용자가 현재 처리하지 않은 작업 인 click_release의 렌더에 사용자를 리다이렉트하지 않는다면, 처리 된 이벤트에서 원격으로 액션이 전송되었습니다. jqgrid를 클릭했을 때 target = _blank를 사용할 수 없습니다. 자바 스크립트가 원격 호출을 처리 할 행. – neelabh

+0

어쨌든 새 창에서 결과를 렌더링하는 것이 목표라면 '자바 스크립트 호출을 원격으로 만드는'점은 무엇입니까? target = _blank가하는 일은 현재 페이지 (자바 스크립트 호출을 원격으로 작성하는 것과 같은 목표)를 변경하지 않고 원하는 요청 응답을 가진 새 창을 원하는대로 생성합니다. 어쩌면 우리는 당신의 목표를 이해하지 못하고 있을까요? – mkralla11

관련 문제