方法属性[ajax,jquery,rails4]

时间:2014-01-24 10:10:59

标签: ruby-on-rails ajax jquery ruby-on-rails-4

我正在阅读使用rails 4的Agile web developpment这本书。 有一个部分产品的购物车只显示它是否为空,我的问题是视图中的函数只发送给帮助者2个属性,而在实现中有3个参数。

在视图中我有下面的代码,它呈现给_cart,我有购物车秀

<%= hidden_div_if(@cart.line_items.empty?, id: 'cart') do %>
        <%= render @cart %>
<% end %>
帮助者有:

module ApplicationHelper
def hidden_div_if(condition, attributes = {}, &block)
 if condition
  attributes["style"] = "display: none"
 end
 content_tag("div", attributes, &block) end
end

我的问题是&amp; block在这种情况下收到id:'cart'但它是一个可选的attibute?为什么它附带&amp ;.但是= =}}呢? 我真的不确定那是怎么回事,有人可以解释一下吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

doend之间和之间的代码是块,这是hidden_div_if的第三个参数,它只是传递给content_tag&定义中的hidden_div_if会在您的视图中捕获该块,而&调用中的content_tag会再次展开它以传递它。

answer here通过几个例子很好地解释了这个想法。我建议您在irb中自行测试所有内容,以便了解它。