【问题标题】:Ruby on Rails respond_with and image formatsRuby on Rails respond_with 和图像格式
【发布时间】:2012-10-24 15:08:58
【问题描述】:

我有一个响应 html 和 png 的控制器(我动态加载图像并将其呈现为文本)。这使得控制器代码变得凌乱,今天我发现了 respond_with,它看起来很酷,但我不知道如何使它适用于不同于 html、json 和 xml 的格式(如 png)

我预计这会起作用,但它仍然会尝试查找模板文件并忽略我的方法:(

models/user.rb

class User < ActiveRecord::Base  
  def to_png
    File.read("some_file.png")
  end
end

controllers/users_controller.rb

class UsersController < ApplicationController
  respond_to :html, :png

  # GET /users/1
  def show
    @user = User.find(params[:id])
    respond_with(@user)
  end
end

【问题讨论】:

    标签: ruby-on-rails image rendering mime-types


    【解决方案1】:

    尝试在文件中添加[YOUR_APP]/config/initializers/mime_types.rb:

    Mime::Type.register "image/png", :png
    

    并重新启动您的应用程序

    【讨论】:

      【解决方案2】:

      如果您需要使用默认不支持的 MIME 类型,您可以 可以在 environment.rb 中注册自己的处理程序,如下所示。

      Mime::Type.register "image/jpg", :jpg

      http://apidock.com/rails/ActionController/MimeResponds/InstanceMethods/respond_to

      在环境.rb中

      Mime::Type.register "image/png", :png
      

      然后

      respond_to do |format|
         format.png do
            #do stuff here
         end
      end
      

      respond_with @user do |format|
         format.png do
            #do stuff here
         end
      end
      

      【讨论】:

      • 我尝试了 Mime 类型注册,但它仍然给我“模板丢失”我知道 response_to 然后 format.png 会工作,因为它目前是这样的,但我希望它可以像 to_json 和 to_xml 一样在模型中移动,以便控制器只能调用 respond_with
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-07
      • 1970-01-01
      • 1970-01-01
      • 2011-05-26
      • 2011-08-28
      • 1970-01-01
      • 2012-08-09
      相关资源
      最近更新 更多