也许有人知道一种制作动态隐藏/显示过滤器动作链接的方法,该链接可以在点击时更改,而无需编写任何javascript或创建部分内容,只需使用控制器和帮助程序。
所以没有两个按钮:
config.action_links.add :index, :label=>"Hide", :parameters => {:cancelled => false}, :position => false
config.action_links.add :index, :label=>"Show", :parameters => {}, :position => false
在hide - show
上点击一个动态按钮会很棒答案 0 :(得分:0)
重要的是,当您更改链接时,即使使用:dynamic_parameters属性,除非您指定
,否则不会重新呈现它们 config.list.refresh_with_header = true
在您的配置中。一旦你这样做,它只是代码。
在我的情况下,我有一个带有可选附加文档的记录列表。我想在显示所有记录的列表和只有附件的列表之间切换。我有一个布尔参数:with_attachments
,可以是'0'
或'1'
。
动作链接看起来像
config.action_links.add :index, label: 'Show All', parameters: { with_attachments: '0' }, position: false
config.action_links.add :index, label: 'Attachment Only', parameters: { with_attachments: '1' }, position: false
config.list.refresh_with_header = true # Refresh action buttons!
索引方法将hidden
标记应用于当前选定的选项。
def index
current = params[:with_attachments] || '0'
active_scaffold_config.action_links.each do |link|
# For :index actions (filtering the list)
if link.action == :index
# hide the one that would refresh with the current parameter value
link.html_options[:hidden] = (link.parameters[:with_attachments] == current)
end
end
super
end
然后有CSS使隐藏的动作不可见
.active-scaffold-header .actions a[hidden=hidden] {
display: none;
}
您可以只使用一个按钮和:dynamic_parameters,但由于我通过CSS附加图标(为简单起见省略),该解决方案对我不起作用。