2011-02-25 17 views
0

私はExamコントローラーを持っています。今度はそのファイルにjqgrid(index.html.erb)があります。 1つは、グリッド行をクリックし、私はイベントを処理するためのjavascriptを設定している。 それは今コントローラーのrailsアクションから新しいブラウザータブを開く

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というビューを持っている方法

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

のように見えます。今、私はサーバーのログをチェックして、すべてのものが正常に動作します。私はchromeの開発者プラグインで見ることができるので、render_examが生成されます。さて問題は、私は新しいタブを開くと、それはjqgridページを変更せずに(render_examビューおよびすべての生成)リモートで起こっているように見えるようrender_examビューをレンダリングする

  1. コントローラのアクションrender_examのいずれかをしたいです。しかし、新しいブラウザタブを開き、シーンの背後で起こるのではなく、render_examアクションビューからrender_examアクションビューをレンダリングする方法を見つけることができませんでした。 または
  2. には、render_examビューにリダイレクトされたjqGrid(またはindexビュー)ページがあります。ここでの問題は、redirect_toアクションがコントローラーメソッドであると想定されているため、ビューでは機能しませんでした。だから私は言うことができません。

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

そうでない問題は解決されていたであろう。 助けていただきありがとうございます ありがとう

+0

ところで、ようこそ! – Zepplock

答えて

0

最初に、アクションごとに1つの応答しかないので、同じアクションでリダイレクトしてレンダリングすることはできません。 2番目の新しいタブを開くことはクライアント側の機能です(あなたのブラウザによって制御されます)。あなたのリンクでtarget = _blankのようなものを使用する必要があります。新しいブラウザが開き、ページをリクエストします(あなたの場合はrender_exam_exams_path)サーバーから。

+0

お返事ありがとうございます。コントローラのrender_examで新しいタブを開き、そのアクションをレンダリングする必要があります。偶数が処理され、同じExamコントローラのインデックスページからリモートでrender_examが送信されました。または、ユーザーがリダイレクトしても、レンダリングのrender_examをクリックして表示していない場合は、処理されたイベントからリモートに送信されます.jqgridをクリックしてtarget = _blankを使用することはできません行は、リモート呼び出しを行うjavascriptによって処理されます。 – neelabh

+0

あなたの目標が新しいウィンドウで結果をレンダリングすることになっている場合、「javascriptコールをリモートで作成する」のポイントは何ですか? target = _blankは何をしますか?現在のページを変更せず(javascriptコールをリモートで作成するのと同じ目標)、代わりに必要なリクエスト応答を持つ新しいウィンドウを作成します。おそらく私たちはあなたの目標を理解していないでしょうか? – mkralla11

関連する問題