gpt4 book ai didi

ruby-on-rails - 如何限制 Rails 路由文件中的资源格式

转载 作者:行者123 更新时间:2023-12-03 23:43:29 25 4
gpt4 key购买 nike

在 Rails 中路由资源时,可选的格式属性会自动附加到生成的路由中。这样可以将相关资源请求为 XML、HTML 等。通常在 Controller 中使用 respond_to 描述实际允许的格式。 .

但在很多情况下,您只想支持 HTML,而编写 respond_to :html 感觉就像是一种开销。在每个 Controller 的每个 Action 中。因此,如果在 routes.rb 文件中构建路由时已经有一种方法可以限制允许的内容类型,那将会很酷,例如

map.resources :users, :formats => :html
map.resources :users, :formats => [:html, :xml]
map.resources :users, :formats => {:index => :html, :show => [:html, :xml]}

有没有办法通过 native 或插件来实现这一点?

附言解决此问题的常用方法是忽略该问题,不要使用 respond_to在行动中。但这实际上并没有限制允许的内容类型。相反,它只是期望在每个可能的内容类型的 View 目录中存在一个模板。如果请求时不存在,系统将抛出 HTTP 500 错误。

最佳答案

如果要将这些路由限制为特定格式(例如 html 或 json),则必须将这些路由包装在范围内。不幸的是,在这种情况下,约束不能按预期工作。

这是这种块的一个例子......

scope :format => true, :constraints => { :format => 'json' } do
get '/bar' => "bar#index_with_json"
end

更多信息可以在这里找到: https://github.com/rails/rails/issues/5548

这个答案是从我之前的答案复制过来的..

Rails Routes - Limiting the available formats for a resource

关于ruby-on-rails - 如何限制 Rails 路由文件中的资源格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1374415/

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