如何在rails_admin的嵌套字段中为输入字段自定义操作?

如何解决如何在rails_admin的嵌套字段中为输入字段自定义操作?

我有一个带有嵌套字段的模型。

class Contract < ApplicationRecord
...
  has_many :contract_tracks
  has_many :tracks,-> { distinct },through: :contract_tracks
  has_many :releases,through: :contract_tracks
...

我需要在tracks字段上自定义操作-我需要仅在此输入上显示相关的Artist名称和Track名称

我该如何实现?

我经历了source,发现最终归结为field.render。 那是很长的路要走。

我可以复制this partial _form_nested_many.html.haml吗?

.controls.col-sm-10{data: { nestedmany: true }}
  .btn-group
    %a.btn.btn-info.toggler{:'data-toggle' => "button",:'data-target' => "#{form.jquery_namespace(field)} > .tab-content,#{form.jquery_namespace(field)} > .controls > .nav",class: (field.active? ? 'active' : '')}
      %i.icon-white
    - unless field.nested_form[:update_only] || !field.inline_add
      = form.link_to_add "<i class=\"icon-plus icon-white\"></i> #{wording_for(:link,:new,field.associated_model_config.abstract_model)}".html_safe,field.name,{ class: 'btn btn-info' }
  = form.errors_for(field)
  = form.help_for(field)
  %ul.nav.nav-tabs

.tab-content
  = form.fields_for field.name do |nested_form|
    - if field.nested_form[:allow_destroy] || nested_form.options[:child_index] == "new_#{field.name}"
      = nested_form.link_to_remove '<span class="btn btn-small btn-danger"><i class="icon-trash icon-white"></i></span>'.html_safe
    = nested_form.generate({action: :nested,model_config: field.associated_model_config,nested_in: field })

谢谢。


更新1

我正在考虑添加一个Artist一起显示的相关Track名称(它们与多对多相关)。而且我只需要在此特定位置显示它即可。

解决方法

如果您只想自定义显示在每条记录上的名称,则无需指定其他类型的数据: 默认情况下,rails admin使用实例的name属性显示它们。 但是我认为,最好给他们自己的Rails管理员特定名称,因为您经常希望该名称与您的运营团队相关​​,而不必与最终用户相关,

这样,您可以告诉Rails管理员使用哪种方法在初始化程序配置文件上添加此行。

RailsAdmin.config {|c| c.label_methods << :rails_admin_title }

然后您将在标记模型上实现该实例方法

class Tag < ApplicationRecord
   def rails_admin_title
      "#{self.name} #{self.id}"
   end 
end

更新

我假设您只想在管理员而非所有其他在管理员上显示曲目的地方编辑合同时显示此自定义名称。

如果尚未定义,则需要使用所有不需要的字段来定义编辑块。并覆盖用于获取关联曲目名称的方法。

class Contract < ApplicationRecord
  rails_admin do
    edit do
      # ... all your other fields you want to add
      field :tracks do
        def associated_object_label_method
          :admin_name_on_contract
        end
      end
    end
  end
end

然后定义该方法

class Track < ApplicationRecord
  has_many :artists

  def admin_name_on_contract
    "#{self.name} #{artists.map(&:name).join(',')}"
  end
end

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?