我试图通过迭代变量来呈现我的部分,然后将特定变量传递给部分,但它没有看到这个变量。
我在这里渲染它
(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
部分的。
关于ruby - 在haml中渲染部分并将变量传递给它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33137224/