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

标签 ruby ruby-on-rails-3 ruby-on-rails-4 haml

我试图通过迭代变量来呈现我的部分,然后将特定变量传递给部分,但它没有看到这个变量。

我在这里渲染它

(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/

相关文章:

ruby-on-rails - 铁路应用程序有带有评论的博客

ruby-on-rails - 30.seconds.ago 之类的东西是如何实现的?

ruby - ruby 中的 "$:"是什么?

ruby-on-rails-3 - 如何删除事件的管理员注册链接?

ruby-on-rails - 名称修复/验证?

ruby-on-rails - 我怎样才能在范围内做到这一点?

mysql - 如何在 ruby​​ on rails 中获取 Object 的值

ruby - 在 Ruby 中使用 libxml 解析 SOAP 响应

ruby - 我怎样才能避免在 Ruby 1.9 中的每个 UTF-8 文件的顶部放置神奇的编码注释?

ruby-on-rails-4 - 在 activeadmin 中将数字类型过滤为字符串