Ruby on Rails的response_with和图像格式

时间:2012-10-24 15:08:59

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

我有一个控制器响应html和png(我动态加载图像并将其渲染为文本)。这使得控制器代码变得混乱,今天我找到了respond_with,看起来非常酷,但是我不知道如何使它与格式不同,不同于html,json和xml(如png)

我希望这会有效,但它仍然试图找到一个模板文件并忽略我的方法:(

模型/ user.rb

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

控制器/ 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

2 个答案:

答案 0 :(得分:2)

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

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

并重新启动您的应用

答案 1 :(得分:1)

  

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

     

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

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

在environment.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