Ruby   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ruby-on-rails – 如何限制Rails路由文件中的资源格式大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
当在Rails中路由资源时,可选格式属性将自动附加到生成的路由.这样就可以将所讨论的资源请求为 XML,HTML等.实际允许的格式通常在控制器中使用respond_to进行描述.

但是在许多情况下,您只需要支持HTML,并且在每个控制器的每个动作中写入respond_to:html就像一个开销.因此,如果在routes.rb文件中构建路由时已经有一种方法来限制允许的内容类型,那么这将是很酷的.

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

有没有办法通过本机或通过插件来实现?

附:解决这个问题的通常方法是忽略这个问题,不要在actions中使用respond_to.但这实际上并不限制允许的内容类型.相反,它只是期望在每个可能的内容类型的views目录中存在一个模板.如果请求不存在,则系统将引发http 500错误.

解决方法

由于Rails使用等价于通配符来处理格式“.:format”,所以在路由方面阻止某些事情有点困难.

而不是这样,在前一个过滤器中捕获任何非HTML请求是非常简单的方法.这可能是一种方式:

class ApplicationController < ActionController::Base
  before_filter :check_format

  private

    def check_format
      if @R_673_10613@est.format != Mime::HTML
        raise ActionController::routIngError,"Format #{params[:format].inspect} not supported for #{@R_673_10613@est.path.inspect}"
      end
    end

end

ActionController :: RoutIngErrors被处理为404错误,这是明智的.
如果您确实有需要支持HTML以外的操作,请使用:

skip_before_filter :check_format,:only => ACTION_NAME

大佬总结

以上是大佬教程为你收集整理的ruby-on-rails – 如何限制Rails路由文件中的资源格式全部内容,希望文章能够帮你解决ruby-on-rails – 如何限制Rails路由文件中的资源格式所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。