【问题标题】:ActiveAdmin belongs_to routesActiveAdmin 属于_to 路由
【发布时间】:2013-06-14 16:19:46
【问题描述】:

我使用 activeadmin gem 创建了新应用。我想用 'belongs_to' 方法创建两个嵌套资源,但出现错误。

第一个资源

ActiveAdmin.register Project do
end

第二个资源

ActiveAdmin.register Ticket do
    controller do
        belongs_to :project
    end
end

尝试打开 neped 资源时出错

没有路线匹配 [GET] "/admin/projects/1/tickets"

我哪里不对?

【问题讨论】:

    标签: ruby-on-rails activeadmin


    【解决方案1】:

    我相信您需要在这里做的是将belongs_to :project 移出控制器块并进入寄存器块(基本上是上一级)。如果这不起作用,我们可能需要查看模型定义。

    【讨论】:

    • 感谢您的帮助。我将此代码移到寄存器块中,但出现其他错误ActiveAdmin::Resource::BelongsTo::TargetNotFound
    • 当我转到/admin/projects/1/tickets 时,我看到了这个错误No route matches [GET] "/admin/projects/1/tickets"
    • 能否贴出项目和工单模型(只是定义关系的部分,业务逻辑我不需要)?根据这个test on line 29,这可能是如何定义关系的问题。
    • 第一个模型class Project < ActiveRecord::Base has_many :tickets end 和第二个class Ticket < ActiveRecord::Base belongs_to :project end
    【解决方案2】:

    替换

    ActiveAdmin.register Ticket do
    controller do
        belongs_to :project
    end
    

    ActiveAdmin.register Ticket do
        belongs_to :project
    

    我遇到了一个非常相似的错误,这个帖子对我帮助很大!我的模型定义是 不完整,我需要添加一个 Has_many 关联。

    【讨论】:

      【解决方案3】:

      首先,将belongs_to 声明移出控制器块。然后,子资源需要您指定 `:parent_class',所以对您来说应该是这样的:

      ActiveAdmin.register Ticket do
        belongs_to :project, :parent_class => Project
      end
      

      【讨论】:

        猜你喜欢
        • 2011-01-22
        • 1970-01-01
        • 2023-04-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多