我可以在ActiveAdmin中自定义删除警告

时间:2014-08-15 12:55:09

标签: ruby-on-rails-3 activeadmin

在Rails应用程序中,让Destroy操作同时出现警告 - “你确定你要删除它吗?”典型代码如下所示:

link_to("Destroy", "http://www.example.com", :method => :delete, :confirm => "Are you sure?")

ActiveAdmin中是否有办法仅为一个模型(不是全局)自定义确认字符串?我看到字符串是从active_admin.delete_confirmation翻译键加载的。字符串可以是特定于模型的吗?

3 个答案:

答案 0 :(得分:3)

由于ActiveAdmin 2.7特定于模型的翻译可以通过将其放置到en.yml中的active_admin.resources组中进行自定义。

active_admin:
    resources:
        user:
            delete_confirmation: Are you sure?

答案 1 :(得分:2)

我认为你不能用配置改变字符串。 但是,您可以更改默认操作:

索引表:https://github.com/activeadmin/active_admin/blob/master/docs/3-index-pages/index-as-table.md

index do
  column :title
  actions defaults: false do |post|
    link_to("Destroy", "http://www.example.com", :method => :delete, :confirm => "Are you sure?")
  end
end

显示页面:https://github.com/activeadmin/active_admin/blob/master/docs/8-custom-actions.md#action-items

action_item only: :show do
  link_to("Destroy", "http://www.example.com", :method => :delete, :confirm => "Are you sure?")
end

答案 2 :(得分:1)

您还可以通过Javascript克服此ActiveAdmin限制。

这是app/assets/javascripts/active_admin.js的一个例子:

//= require active_admin/base

$( document ).ready(function() {

    $('body.admin_companies a[data-method=delete]').
        data('confirm', 'New confirmation text per model Company.\n Ok?');

    $('body.admin_users a[data-method=delete]').
        data('confirm', 'New confirmation text per model User.\n Ok?');
});

其中body.admin_companies将此确认消息限制为模型公司的视图。 类似于body.admin_users

它适用于#index和#show。

唯一的缺点是它与i18n不能很好地配合(如果你需要多语言避免这种解决方案)。