RailsAdmin:如何从自定义操作中呈现不同的模型索引

RailsAdmin: how to render a different model index from a custom action

在我的网站上,我有可以申请工作的用户,在我的数据库中创建候选资格。

在管理员的工作索引中,我创建了一个自定义操作,因此在每个工作旁边都有一个按钮,我可以按下该按钮来访问该工作的候选人索引。

除了这个自定义操作不起作用:

  class Candidacies < RailsAdmin::Config::Actions::Base
      RailsAdmin::Config::Actions.register(self)
      register_instance_option :member? do true end
      register_instance_option :only do [Job] end
      register_instance_option :link_icon do 'fa fa-users' end
      register_instance_option :controller do
          proc do
              @id = params[:id]
              @objects = Candidacy.where(job_id: @id)
              render :index
          end
      end
  end

我加载了该工作的所有候选人,但是当我尝试重定向到候选人索引时,RailsAdmin 尝试加载工作索引,但使用的是候选人而不是工作,因此导致错误 500,因为候选人和工作没有共享相同的字段。

有人知道如何将特定职位的候选人加载到索引候选人中吗?

您可以在候选人索引上添加一个工作过滤器,然后为候选人构建一个 link 并预先过滤该工作。

首先将工作字段添加到候选人管理配置

  rails_admin do
    list do
      field :job do
        filterable true
      end
    end
  end

那么我相信 url 看起来像这样:

"/admin/candidacy?model_name=candidacy&utf8=✓&f[job][52801][o]=is&f[job][52801][v]=#{job.id}"

您可以从浏览器中获取它,使用 UI 过滤视图并使用 tool like this

解码 url

因此,当您的用户单击 link 时,他们将被带到职位预筛选的候选人。

然后您可以修改您的操作以重定向到呈现 :index

的 url