簡體   English   中英

如何檢查方法是否通過yield / block.call執行?

[英]How to check if method is executed via a yield/block.call?

在一個非常基本的示例中,我有兩個Rails表單幫助器togglescheckbox 我希望復選框在切換塊內時標記的標記不同。 我試圖使用一個實例變量來檢查我是否在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM