繁体   English   中英

在haml中渲染部分并将变量传递给它

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM