gpt4 book ai didi

ruby-on-rails - 如何在事件管理员中获取请求 uri

转载 作者:数据小太阳 更新时间:2023-10-29 08:51:09 24 4
gpt4 key购买 nike

我有多态模型:

class Picture < ActiveRecord::Base
belongs_to :imageable, :polymorphic => true
end

class Service < ActiveRecord::Base
has_many :pictures, :as => :imageable
end

class Product < ActiveRecord::Base
has_many :pictures, :as => :imageable
end

为了让我的 activeadmin 模型与 parent 双方(服务和产品)一起工作,我需要做类似的事情:

ActiveAdmin.register Picture do
def who_do_i_belong_to?
uri = how_to_get_uri?
if uri.match(/products/)
:product
else
:service
end
end

belongs_to who_do_i_belong_to?
end

解决方法似乎有效。我只想念如何从 who_do_i_belong_to 中获取 url/uri?方法。

controller.controller_name # "admin/services", so it is not useful. 

先谢谢你。

最佳答案

如果你想为你的多态嵌套资源(products/picturesservices/pictures)添加 CRUD,你的应用程序需要有像 /admin 这样的路由/products/:id/images/admin/services/:id/images。问题是,当您在 register block 中使用 belongs_to :parent 时,active_admin 只会生成一个嵌套路由 admin/parents/:id/child,而你需要两个。此外,:parent 无法通过当前 url 来确定,因为调用 belongs_to :parent 本身用于创建当前 url(资源路径)。

要解决这个问题,您可以在 configs.rb 中自己定义路由

namespace :admin do
resources :services do
resources :pictures
end

resources :products do
resources :pictures
end
end

并通过在 register block 中为 Picture 编写 controller.belongs_to :service, :product, polymorphic: true 告诉 active_admin 使用这些路由>.

来源:https://github.com/gregbell/active_admin/issues/1183

关于ruby-on-rails - 如何在事件管理员中获取请求 uri,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12645936/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com