【发布时间】:2016-02-27 09:28:01
【问题描述】:
我有一个 rails 辅助方法,我想传递两个不同的块,以便在方法的两个不同位置生成。
在我看来,这就是我想要实现的目标..
<%= collapsible_content do %>
<%= page_heading venue.title %>
<%- venues_facility_opening_times venue %>
<%-end %>
这就是方法本身
def collapsible_content(&block1, &block2)
content_tag(:div, nil, class: 'collapsible-content', data: { name: 'collapsible-1' }) do
content_tag(:div, nil, class: 'collapsible-content-item') do
concat button_tag(yield &block1, class: 'collapsible-content-toggle')
concat hidden_content(&block2)
end
end
end
private
def hidden_content(&block)
content_tag(:div, class: "collapsible-content-body") do
content_tag(:div, yield) if block_given?
end
end
但是,据我了解,&block 始终是最后一个参数,那么如何区分它们的产生位置?
我尝试使用 lambda,但 ActiveSupport::SafeBuffer 阻止了这一点。
【问题讨论】:
标签: ruby-on-rails ruby