【问题标题】:How to tell which format a controller has resolved to render如何判断控制器已决定呈现哪种格式
【发布时间】:2012-06-22 13:34:32
【问题描述】:

在带有以下代码的 rails 控制器操作中:

respond_to do |format|
  format.json{ render :json=>  {:status => 200, :response=>@some_resource} }
  format.html { redirect_to(some_resource_path)}
end

如何记录控制器将解析的格式,即“HTML”或“json”? format 的类型为 Collector。有没有办法得到一个表示格式的字符串?

【问题讨论】:

标签: ruby-on-rails ruby-on-rails-3 controller respond-to


【解决方案1】:

获取格式的方法是:

controller.request.format

【讨论】:

  • 谢谢阿尼尔。所以从控制器来看,它只是 request.format。
  • 最好使用 request.format,因为 controller.request.format 会抛出未定义的局部变量或方法 `controller'
【解决方案2】:

在您的控制器中,您可以执行以下操作:

request.format
request.format.html?
request.format.js?
request.format.json?
# etc.

【讨论】:

  • 我找不到任何关于可用类型或其构建方式的文档。你知道这是在哪里定义的吗?
  • 在我的控制器中使用 byebug gem,我可以在调试会话中输入 formats 并得到以下输出:[:js, :html, :text, :css, :ics, :csv, :vcf, :vtt, :png, :jpeg, :gif, :bmp, :tiff, :svg, :mpeg, :mp3, :ogg, :m4a, :webm, :mp4, :otf, :ttf, :woff, :woff2, :xml, :rss, :atom, :yaml, :multipart_form, :url_encoded_form, :json, :pdf, :zip, :gzip] 请参阅此文档:guides.rubyonrails.org/layouts_and_rendering.html
猜你喜欢
  • 2013-07-03
  • 2018-09-07
  • 1970-01-01
  • 1970-01-01
  • 2016-06-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多