【问题标题】:Rails ActiveAdmin link_to new model inside different - ActiveRecord::AssociationTypeMismatchRails ActiveAdmin link_to 内部不同的新模型 - ActiveRecord::AssociationTypeMismatch
【发布时间】:2021-05-18 11:39:41
【问题描述】:

我有两个带有 ActiveAdmin 面板的模型:

class Portfolio < ApplicationRecord
  has_many :portfolio_reports
end

class PortfolioReport < ApplicationRecord
  belongs_to :portfolio
end

Portfolio 面板中,我希望有一个按钮,可以为该投资组合创建PortfolioReport(它会将管理员带到具有给定portfolio_id 的新PortfolioReport 视图)。

为此,我有以下代码:

# admin/portfolios.rb
ActiveAdmin.register Portfolio do
  action_item :portfolio_report, only: :show do
    link_to 'Create Report', new_admin_portfolio_report_path(portfolio_id: portfolio.id)
  end
end

# admin/portfolio_reports.rb
ActiveAdmin.register PortfolioReport do
  permit_params :portfolio_id
  includes :portfolio

  form do |f|
    f.inputs :published_at
    tabs do
      tab 'Intro content' do
        f.inputs do
          input :portfolio, as: :hidden
          # other inputs
        end
      end
    end
  end

这给了我一个错误:

ActiveRecord::AssociationTypeMismatch in Admin::PortfolioReportsController#create
Portfolio(#523620) expected, got "" which is an instance of String(#4100)

我错过了什么?

【问题讨论】:

    标签: ruby-on-rails activeadmin


    【解决方案1】:

    也许这会对某人有所帮助 - 问题出在错误定义的输入表单键上。 action_item里面我通过了portfolio_id

    # admin/portfolios.rb
    ActiveAdmin.register Portfolio do
      action_item :portfolio_report, only: :show do
        link_to 'Create Report', new_admin_portfolio_report_path(portfolio_id: portfolio.id)
      end
    end
    

    这就是 ActiveAdmin 所期望的关键:

    # admin/portfolio_reports.rb
          form do |f|
            f.inputs :published_at
            tabs do
              tab 'Intro content' do
                f.inputs do
                  **input :portfolio_id, as: :hidden**
                  # other inputs
                end
    

    仍然很奇怪,您不能将整个对象作为参数传递给 link_to 路径,例如new_admin_portfolio_report_path(resource)。 ActiveAdmin DSL 无法处理。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-20
      • 2012-06-08
      • 1970-01-01
      • 1970-01-01
      • 2017-07-08
      相关资源
      最近更新 更多