主动脚手架动态动作链接



也许有人知道一种方法,可以制作一个动态隐藏/显示过滤器操作链接,该链接在点击时更改,而无需编写任何javascript或创建部分,只需使用控制器和助手。

因此,与其有两个按钮:

config.action_links.add :index, :label=>"Hide", :parameters => {:cancelled => false}, :position => false
config.action_links.add :index, :label=>"Show", :parameters => {}, :position => false

如果有一个动态按钮可以在点击时从隐藏-显示更改,那将是非常棒的

重要的一点是,当您更改链接时,即使使用: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!

index方法将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附加的图标(为了简单起见,省略了),这个解决方案对我来说不起作用

相关内容

  • 没有找到相关文章

最新更新