代码之家  ›  专栏  ›  技术社区  ›  Gav

在Rails中呈现部分时,“locals”能否与“collection”一起使用?

  •  14
  • Gav  · 技术社区  · 14 年前

    当我尝试呈现这样的部分时,一切都正常:

    = 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}
    

    我试过四处走动,但似乎什么都没用,这让我相信人们不能用当地人来收集藏品。任何帮助都将不胜感激。

    伽伐文

    5 回复  |  直到 9 年前
        1
  •  -9
  •   Salil    14 年前

    不,你不能一起用。裁判 this

    我想你得做点什么

      <% for ad in @enquiry.available_car_types %>
        <%= render :partial => "/shared/enquiry/car_type", :locals =>{ :ad => ad, :path =>customers_enquiry_path } %>
      <% end %>
    
        2
  •  25
  •   xguox    9 年前

    顺便说一句,对我来说,就像导游说的, 在对分部的调用中指定 :as 选项

    n调用分部

    enter image description here

        3
  •  18
  •   seren23    10 年前

    对于Rails 4.x,如果直接将集合传递给render(如果要对异类集合使用自动部分选择,则必须这样做),则下一个参数将被解释为局部变量的散列。

    尝试以下操作:

    = render @enquiry.available_car_types, :path => customers_enquiry_path
    
        4
  •  9
  •   par    14 年前

    您使用的是什么版本?使用我的2.3.5,我可以做到:

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

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

        5
  •  1
  •   YWCA Hello    11 年前

    @盖夫,你遇到了两个问题。

    1. render 忽视 locals 将集合作为第一个参数传递时的选项。您需要指定 partial collection 参数选项,如第二个示例中所示。

    2. path 可能属于保留字的范畴。尝试使用其他东西。