在Rails中渲染部分时,'locals'可以与'collection'一起使用吗?

时间:2010-06-01 09:31:34

标签: ruby-on-rails

当我尝试渲染这样的部分时,一切正常:

= render :partial => "/shared/enquiry/car_type", :collection => @enquiry.available_car_types

但是,如果我还想传递一个变量(在这种情况下是'path',因为我在两个表单中共享这个部分),我无法使用该路径:

= render :partial => "/shared/enquiry/car_type", :collection => @enquiry.available_car_types, :locals => {:path => customers_enquiry_path}

我尝试过移动的东西,但似乎什么都没有用,让我相信一个人不能使用收藏品的本地人。任何帮助将不胜感激。

GAV株系

5 个答案:

答案 0 :(得分:26)

就像导游说的那样,    在部分

的调用中指定:as选项

enter image description here

答案 1 :(得分:18)

对于Rails 4.x,如果将集合直接传递给渲染(如果要对异构集合使用自动部分选择,则必须执行此操作),下一个参数将被解释为本地散列。

尝试以下方法:

= render @enquiry.available_car_types, :path => customers_enquiry_path

答案 2 :(得分:9)

您使用的是哪个版本?使用我的2.3.5我能做到这一点:

render :partial => "/site_articles/article", :collection => @site_articles, :locals => { :footer => true }

,您可以在其他地方找到解释,例如this的3.4.6。

答案 3 :(得分:1)

@Gav,你遇到了两个问题。

    传递集合作为第一个参数时,
  1. render忽略locals选项。您需要在第二个示例中指定partialcollection参数选项。

  2. path可能属于保留字的范围。尝试使用别的东西。

答案 4 :(得分:-9)

不,你不能一起使用它们。参考this

我认为你必须做类似以下的事情

  <% for ad in @enquiry.available_car_types %>
    <%= render :partial => "/shared/enquiry/car_type", :locals =>{ :ad => ad, :path =>customers_enquiry_path } %>
  <% end %>