Rails,向另一个控制器请求
Rails, request to another controller
我有三个型号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
创建单独的控制器,它将创建此模型,然后重定向到客户端和服务。
是否可以调用未连接视图的控制器?
我认为你应该使用多态关联。在 Favourite
中,您应该存储 favouritable_id
和 favouritable_type
。 { favouritable_id: "a", favouritable_type: "Client" }
表示 Favourite
与客户端 ID "a" 连接。要 FavouriteController#create
,您需要传递参数 id
和 type
of client/service. In view
render collection: client.favouritesor
render collection: service.favourites. I am not sure if
Mongoidclasses implement
to_partial_path`方法,自己做很简单
是的,你可以有一个没有视图的控制器。
存在多个选项:
使用nested forms and cocoon在parent表格中生成相关数据。收藏夹不需要控制器。
在 parent 视图中使用表单发送到收藏夹控制器,该控制器重定向回 parent 视图。它只是用 redirect_to
重定向到其他地方
- 要使用相同的控制器方法但重定向到不同的 parent 页面,请包含一个隐藏的表单元素
return_to
,该元素可用于确定重定向的位置。过滤该值以确保它是允许的 url,否则您可能会有安全漏洞。
- 与上一个选项类似,但使用javascript/ajax发送和接收数据。同样,控制器可能没有视图,但会发送 JSON 或 XML 或其他任何内容。
我有三个型号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
创建单独的控制器,它将创建此模型,然后重定向到客户端和服务。
是否可以调用未连接视图的控制器?
我认为你应该使用多态关联。在 Favourite
中,您应该存储 favouritable_id
和 favouritable_type
。 { favouritable_id: "a", favouritable_type: "Client" }
表示 Favourite
与客户端 ID "a" 连接。要 FavouriteController#create
,您需要传递参数 id
和 type
of client/service. In view
render collection: client.favouritesor
render collection: service.favourites. I am not sure if
Mongoidclasses implement
to_partial_path`方法,自己做很简单
是的,你可以有一个没有视图的控制器。
存在多个选项:
使用nested forms and cocoon在parent表格中生成相关数据。收藏夹不需要控制器。
在 parent 视图中使用表单发送到收藏夹控制器,该控制器重定向回 parent 视图。它只是用
重定向到其他地方redirect_to
- 要使用相同的控制器方法但重定向到不同的 parent 页面,请包含一个隐藏的表单元素
return_to
,该元素可用于确定重定向的位置。过滤该值以确保它是允许的 url,否则您可能会有安全漏洞。
- 要使用相同的控制器方法但重定向到不同的 parent 页面,请包含一个隐藏的表单元素
- 与上一个选项类似,但使用javascript/ajax发送和接收数据。同样,控制器可能没有视图,但会发送 JSON 或 XML 或其他任何内容。