【问题标题】:Rails Admin form for has_many associationhas_many 关联的 Rails 管理表单
【发布时间】:2019-01-09 11:23:17
【问题描述】:

例如,我在我的一个模型中有一个关联:

has_many :students

我们知道rails_admin 在表单中创建了一个多选输入字段,用户可以在其中选择学生。

多选输入列出所有学生。

我的问题是,有没有办法过滤这些学生,只列出一些满足某些条件的学生?如果有,我应该如何进行?例如,我只想列出活跃的学生。

有 100 名学生,其中 75 名活跃。我只想列出这 75 个。

在下面的屏幕截图中,我只想在左侧显示 Demo 项目。

【问题讨论】:

    标签: ruby-on-rails rails-admin


    【解决方案1】:

    是的,您可以像这样限定关联

      rails_admin do
        edit do
          field :students do
            associated_collection_scope do
              class_room = bindings[:object]
    
              proc { |scope| scope.where(class_room: class_room) }
            end
          end
        end
      end
    

    【讨论】:

      【解决方案2】:

      是的,您可以在父模型中使用范围。

      阅读本文以获取Scopesrails_adminScopes阅读本文

      class Teacher < ApplicationRecord
        has_many :students
        scope :active_students, -> { where(active: true) }
      end
      

      然后你可以像这样使用它:

      Teacher.first.active_students

      更新:

      您必须使用here 中提到的自定义字段来专门自定义students 的字段

      【讨论】:

      • 有一个字段标记哪些学生是活跃的,哪些不是。我也了解范围以及我们如何使用它。然而,我的问题是关于 rails_admin 生成的表单。如何使用示波器来解决我的问题?我已经指定了rails admin。我已经编辑了问题并添加了一个屏幕截图来详细说明我的问题。
      • 让我告诉你如何做到这一点。同时也请加rails_admin form code
      • rails_admin 表单代码? rails_admin 自动生成代码。表单没有视图。由于该动作不是自定义的,因此我没有编写自定义表单。表单是自动生成的。
      • 我添加了更新。您必须自定义您的字段并将逻辑添加到您的自定义 field_form
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-09
      • 1970-01-01
      相关资源
      最近更新 更多