在铁轨中阻止助手

时间:2013-08-05 18:40:24

标签: ruby-on-rails-3

我在轨道上看了一下关于拦截器的事情,但我比起初时更加困惑。 我的目标是创建一个这样的帮手

<% needs_clearance 1 do %>
    You'll see this block if your clearance is level 1, 4 or 5
<% end %>

应该产生

 <% if current_user.clearance.id == 1 or current_user.clearance_id == 4 or current_user.clearance.id == 5 %>
     You'll see this block if your clearance is level 1, 4 or 5
 <% end %>

4和5分别是管理和管理员角色 如何创建此块助手?

1 个答案:

答案 0 :(得分:1)

大致是:

def needs_clearance(level, &block)
  if current_user.clearance >= level
    capture(&block)
  end
end

块帮助程序通常如下所示,例如,在div中包装内容:

def box(&block)
  "<div class='box'>" + capture(&block) + "</div>"
end

来自:http://timelessrepo.com/block-helpers-in-rails3

我也会考虑阅读它,因为它讨论了块助手的一个有趣结果。