[英]How to check if method is executed via a yield/block.call?
在一个非常基本的示例中,我有两个Rails表单帮助器toggles
和checkbox
。 我希望复选框在切换块内时标记的标记不同。 我试图使用一个实例变量来检查我是否在toggles
方法内,但是有人说保持这种状态将破坏在多线程应用程序中使用它的能力。 有什么更好的方法?
因此,基本上,我想检查在执行checkbox
是否处于toggles
状态。
<%= toggles 'Select one' do %>
<%= f.checkbox 'Foo' %>
<%= f.checkbox 'Bar' %>
<%= f.checkbox 'Baz' %>
<% end %>
def toggles(*args)
@inside_toggles = true
template.concat yield
@inside_toggles = false
end
def checkbox(*args)
if @inside_toggles
...
else
...
end
end
如果仅是格式问题,您是否尝试过使用CSS?
您添加一个用于辅助方法toggles
的类
def toggles
content_tag :div, class: 'toggle'
end
然后在您的CSS中
.toggle input[type="checkbox"] {
/* special format */
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.