ActiveAdmin创建/编辑表单的测试-关联对象的“添加新记录”按钮
创始人
2024-07-24 04:30:38
0
  1. 首先在ActiveAdmin注册要编辑的资源及其关联资源
# app/admin/post.rb

ActiveAdmin.register Post do
  permit_params :title, :content, :category_id 
  form do |f|
    f.inputs "Details" do
      f.input :title
      f.input :content, as: :text
      f.input :category
    end
    actions
  end
end
  1. 添加一个自定义的javascript文件,名为:add_new_record_button.js
// app/assets/javascripts/add_new_record_button.js

(function() {
  $(function() {
    $('select[data-has-new-option=true]').select2({
      placeholder: "选择或新建记录",
      allowClear: true,
      tags: true,
      createTag: function (params) {
        var term = $.trim(params.term);
        if (term === '') {
          return null;
        }
        return {
          id: term,
          text: term,
          newOption: true
        }
      }
    }).on('select2:select', function (e) {
      if (e.params.data.newOption) {
        var $option = $("")
          .val(e.params.data.id)
          .text(e.params.data.text);
        $(this).append($option).trigger('change');
      }
    });
  });
}).call(this);
  1. 在ActiveAdmin页面中加载此javascript文件:
# app/assets/javascripts/active_admin.js

//= require active_admin/base

//= require add_new_record_button
  1. 最后定义关联资源的资源名称和参数:
# app/admin/category.rb

ActiveAdmin.register Category do
  permit_params :name
end

完成这些步骤后,便可以实现添加关联数据的“添加新记录”按钮,用户可以选择现有关联资源或创建新的关联资源。

相关内容

热门资讯

Android Recycle... 要在Android RecyclerView中实现滑动卡片效果,可以按照以下步骤进行操作:首先,在项...
安装apache-beam==... 出现此错误可能是因为用户的Python版本太低,而apache-beam==2.34.0需要更高的P...
Android - 无法确定任... 这个错误通常发生在Android项目中,表示编译Debug版本的Java代码时出现了依赖关系问题。下...
Android - NDK 预... 在Android NDK的构建过程中,LOCAL_SRC_FILES只能包含一个项目。如果需要在ND...
Akka生成Actor问题 在Akka框架中,可以使用ActorSystem对象生成Actor。但是,当我们在Actor类中尝试...
Agora-RTC-React... 出现这个错误原因是因为在 React 组件中使用,import AgoraRTC from “ago...
Alertmanager在pr... 首先,在Prometheus配置文件中,确保Alertmanager URL已正确配置。例如:ale...
Aksnginxdomainb... 在AKS集群中,可以使用Nginx代理服务器实现根据域名进行路由。以下是具体步骤:部署Nginx i...
AddSingleton在.N... 在C#中创建Singleton对象通常是通过私有构造函数和静态属性来实现,例如:public cla...
Alertmanager中的基... Alertmanager中可以使用repeat_interval选项指定在一个告警重复发送前必须等待...