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