2012-03-22 141 views
12

我遇到了一些问题,将一些参数传递给partial。无论我尝试过什么,部分渲染时参数都不会通过。rails 3渲染部分带参数

我正在使用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链接到指数的,我d喜欢链接到一个名为viewall的部分。像这样:

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

我需要能够通过与部分合并参数如果可能的话。我已经查看了所有文档,并且整天都用我的手指搜索了这个答案,但仍然没有任何结果。任何帮助,将不胜感激。

回答

31

传递变量@foo到部分的语法是:

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

然后,它是在部分作为foo可用。

参见this guide的第3.4.4节。

编辑:??由于Rails 3中,更加简洁的版本是这样的:

render "partial", foo: @foo 
+0

其实我试过了,它没有通过可变的。渲染(:partial =>“viewall”,:locals => {:status_filter =>“H”}) - 尝试使用和不使用()。也尝试没有成功,让这与link_to一起工作。不确定是否可能。 – user1214966 2012-03-22 17:58:56

+1

请确保您在部分而不是'@ status_filter'或'params [:status_filter]' – Thilo 2012-03-22 18:02:25

+0

中以'status_filter'的身份访问它,我只有一个普遍的问题,以确保我正确执行此操作。部分在加载之前碰到控制器?我假设他们做(呈现),但如果他们不会,我会有问题,因为我的控制器使用这些参数从我的工作订单表中选择基于日期范围和状态的行。我的意图是让工作订单根据其状态显示在不同的选项卡中。 – user1214966 2012-03-22 19:40:21