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

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

相关内容

热门资讯

避免在粘贴双引号时向VS 20... 在粘贴双引号时向VS 2022添加反斜杠的问题通常是由于编辑器的自动转义功能引起的。为了避免这个问题...
Android Recycle... 要在Android RecyclerView中实现滑动卡片效果,可以按照以下步骤进行操作:首先,在项...
安装apache-beam==... 出现此错误可能是因为用户的Python版本太低,而apache-beam==2.34.0需要更高的P...
omi系统和安卓系统哪个好,揭... OMI系统和安卓系统哪个好?这个问题就像是在问“苹果和橘子哪个更甜”,每个人都有自己的答案。今天,我...
原生ios和安卓系统,原生对比... 亲爱的读者们,你是否曾好奇过,为什么你的iPhone和安卓手机在操作体验上有着天壤之别?今天,就让我...
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...