[英]Rendering partials in haml and passing variable to it
我试图通过迭代变量然后将特定变量传递给部分来渲染我的部分,但它没有看到这个变量。
我在这里渲染它
(dogs.html.haml)
- dogs.each do |dog|
.dog
= render 'dog', :locals => { :dog => dog }
然后我希望变量狗在我的部分可见
(_dog.html.haml)
.title
= dog.name
但它不可见
我究竟做错了什么?
你将两种不同的渲染部分的方式混合在一起。
使用此(遗留)表单...
render partial: 'dog', locals: {dog: dog}
或者这个更新的形式:
render 'dog', dog: dog
或者这个更好的新形式,您应该更喜欢:
= render dog
但不是你写的版本。 你从第二种方式采取了render 'dog'
部分,而locals: { dog: dog }
从第一种方式开始。 这传递了一个名为locals
,它具有一个哈希值。
第三种方式是首选方式。 如果你有一个ActiveModel对象,你可以简单地调用render <object>
,它会根据模型的名称自动为你选择合适的部分。
这也适用于ActiveRecord模型的集合。 你应该完全放弃你的@dogs.each
循环,只需要调用即可
= render @dogs
这将自动为集合中的每只狗调用= render dog
。 你只需要将你的.dog
移到_dog
部分内。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.