我有三个模型Client
,Service
,Favourite
。 Favourite
的结构是:
class Favourite
include Mongoid::Document
include Mongoid::Timestamps
#Associations
belongs_to :client
belongs_to :service
end
这意味着Clients
和Services
有很多Favourites
。我正在为我的模型创建仪表板。鉴于展示了单个Clients
信息,我希望显示其Favourites
,同样会显示单个Services
。
我想添加表单来创建Favourites
,但此模型不会有自己的视图。它将通过Clients
和Services
显示。
我的第一个想法是为Clients
和Services
的控制器创建两种不同的方法。
我的第二个想法是为Favourites
创建单独的控制器,该控制器将创建此模型,然后重定向到客户端和服务。
是否可以调用未与视图连接的控制器?
答案 0 :(得分:1)
是的,您可以拥有一个没有视图的控制器。
存在多种选择:
使用nested forms和cocoon在父表单中生成相关数据。收藏夹不需要控制器。
在父视图中使用发送到收藏夹控制器的表单,该表单重定向回父视图。它只是用redirect_to
return_to
,可用于确定重定向的位置。虽然过滤了值,但确保它是允许的网址,否则您可能会遇到安全漏洞。答案 1 :(得分:0)
我认为你应该使用多态关联。在Favourite
中,您应该存储favouritable_id
和favouritable_type
。 { favouritable_id: "a", favouritable_type: "Client" }
表示Favourite
与客户端ID“a”相关联。要FavouriteController#create
,您需要传递客户端/服务id
渲染集合的type
和. In view
段:client.favourites or
渲染集合:service.favourites {{ 1}} Mongoid . I am not sure if
to_partial_path`方法,你可以自己做,这很容易。