当我尝试渲染这样的部分时,一切正常:
= 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株系
答案 0 :(得分:26)
就像导游说的那样, 在部分
的调用中指定:as
选项
答案 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,你遇到了两个问题。
render
忽略locals
选项。您需要在第二个示例中指定partial
和collection
参数选项。
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 %>