2012-03-22 10 views
12

一部のパラメータを部分的に渡す際に問題が発生しました。私が何を試しても、部分がレンダリングされたときにパラメータが渡されません。レール3レンダリングパーシャルwithパラメータ

私はjqueryタブレイアウトを使用しています。各タブには、特定のステータスのジョブ注文が表示されます。

私はparams:sort_filterと:status_filterを使用してこれを達成しています。

私の元のコードはここにあるが、私はのlink_toの代わりに、それはここにリストされていた方法でパーシャルをレンダリングするためにこれを変更したい:

  <ul> 
      <li><%= link_to "Active", work_orders_path(params.merge({:status_filter => "A", :sort_filter => params[:sort_filter]})) %></li> 
      <li><%= link_to "On Hold", work_orders_path(params.merge({:status_filter => "H", :sort_filter => params[:sort_filter]})) %></li> 
      <li><%= link_to "Completed", work_orders_path(params.merge({:status_filter => "C", :sort_filter => params[:sort_filter]})) %></li> 
      <li><%= link_to "Billed", work_orders_path(params.merge({:status_filter => "B", :sort_filter => params[:sort_filter]})) %></li> 
     <li><%= link_to "All", work_orders_path(params.merge({:status_filter => "E", :sort_filter => params[:sort_filter]})) %></li> 
    </ul> 

ので、代わりに私のwork_orders_pathにインデックスへのリンク、私は」 viewallと呼ばれる部分にリンクするのが好きです。このように:

<%= link_to render (:partial => 'viewall', :status_filter => "E", :sort_filter => params[:sort_filter]) %> 

可能であれば、部分的にマージされたパラメータを渡すことができる必要があります。私はすべての文書を見て、これに答えるために一日中昨日私の指を見つけて、まだ何も出てこなかった。どんな助けもありがとう。

render :partial => "partial", :locals => { :foo => @foo } 

それはfooとして部分的に利用可能である:部分的に可変@fooを渡す

答えて

31

構文は次あります。

セクション3.4.4のthis guideを参照してください。

はEDIT:。?。?実は私はそれを試してみましたが、それがすべての変数を渡すことはありませんでした

render "partial", foo: @foo 
+0

:Railsの3以来、より簡潔なバージョンがこれです。レンダリング(:partial => "viewall"、:locals => {:status_filter => "H"}) - ()の有無にかかわらず試してみました。また、これを成功させることなく、link_toで動作させることも試みています。可能かどうかわからない – user1214966

+1

'status_filter'や' params [:status_filter] 'ではなく、部分的に' status_filter'としてアクセスしてください。 – Thilo

+0

私はこの権利を確実にするために一般的な質問があります。パーシャルはロードされる前にコントローラに当たっていますか?私は彼らが(レンダリングする)と仮定していますが、そうでない場合は、コントローラがこれらのパラメータを使用して日付範囲とステータスに基づいて作業オーダーテーブルの行を選択するため、問題が発生します。私が意図しているのは、自分のステータスに基づいて作業オーダを別のタブに表示させることです。 – user1214966