Active Scaffold动态动作链接

时间:2015-11-13 17:29:58

标签: ruby-on-rails ruby-on-rails-3.2 activescaffold

也许有人知道一种制作动态隐藏/显示过滤器动作链接的方法,该链接可以在点击时更改,而无需编写任何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

上点击一个动态按钮会很棒

1 个答案:

答案 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附加图标(为简单起见省略),该解决方案对我不起作用。