管理 Rails ActiveAdmin 表单中“取消”链接的行为

问题描述 投票:0回答:1

ActiveAdmin DSL 生成的典型表单可能如下所示:

ActiveAdmin.register Post do
  ...
  form do |f|
    f.inputs do
      f.input :title
      f.input :content
    end
    f.actions
  end
  ...
end

f.actions
位呈现提交按钮和取消链接。问题是后者的目标始终是索引页。相反,对于以前保留的记录,我希望返回到显示页面。作为一种可能的解决方法,
f.actions
可以替换为:

f.actions do
  f.action :submit
  if resource.persisted?
    f.cancel_link({action: :show})
  else
    f.cancel_link
  end
end

然而,这看起来冗长且笨拙。我是否缺少一些更惯用的技巧来完成同样的任务?

ruby-on-rails activeadmin formtastic
1个回答
0
投票

它并不比你现在拥有的好多少,但这很有效:

f.cancel_link(action: f.object.persisted? ? :show : :index)

更有趣的是,您可以通过以下方式重定向到任意目标(甚至不在当前控制器中,这是让我想到这个问题的用例):

  form do |f|
    # ...
    f.actions do
      f.action :submit
      f.cancel_link(action: :redirect_shim)
    end
  end

  member_action :redirect_shim do
    redirect_to(admin_whatever_path(resource.some_association))
  end
© www.soinside.com 2019 - 2024. All rights reserved.