Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/54.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何在active admin中获取请求uri_Ruby On Rails_Ruby_Activeadmin - Fatal编程技术网

Ruby on rails 如何在active admin中获取请求uri

Ruby on rails 如何在active admin中获取请求uri,ruby-on-rails,ruby,activeadmin,Ruby On Rails,Ruby,Activeadmin,我有多态模型: 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, :a

我有多态模型:

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
这个变通办法似乎奏效了。我只想知道如何从“我属于谁”中获取url/uri?方法

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

高级版谢谢。

从模型内部请求uri不符合MVC设计。您的方法应该在应用程序控制器中。当您想要注册图片时,您当前的控制器应该告诉模型它是什么。

您可以使用
#imageable\u type
来确定父模型是什么

例如:

Image.find(1).imageable_type # => "Product"

如果您想为多态嵌套资源(
产品/图片
服务/图片
)使用CRUD,您的应用程序需要有类似于
/admin/products/:id/images
/admin/services/:id/images
的路由。问题是,当您在
寄存器
块中使用
归属于:parent
时,活动的\u admin将只生成一个嵌套路由
admin/parents/:id/child
,而您需要两个。此外,
:parent
不能由当前url确定,因为调用
属于:parent
本身用于创建当前url(资源路径)

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

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

  resources :products do
    resources :pictures
  end
end
并通过在您的
注册表中为
图片
写入
块,告诉活动管理员使用这些路由


来源:

你最终想要实现什么?例如,您是否尝试渲染图片索引,其中每个图片都根据其关联进行自定义(即
:product
:service
)?模型工作正常。我只希望能够通过ActiveAdmin/admin/products/1/images和/admin/services/1/images为产品和服务CRUD图片我不想从模型内部获取url。我正试图从控制控制器的ActiveAdmin内部获取它。类似于
url\u for
request.path
的东西?它不起作用。我无法访问里面的id我属于谁?方法。此外,它不适用于创建图片,因为imageable_类型应该被持久化。imageable_类型也是数据库中的一列,它实际上在多态模型中,请检查它。所以它是持久化的,您可以查询任何图像对象以获取它的可成像类型。
namespace :admin do
  resources :services do
    resources :pictures
  end

  resources :products do
    resources :pictures
  end
end