0

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

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

模型/用户.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
4

2 回答 2

2

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

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

并重新启动您的应用程序

于 2012-10-24T15:16:34.017 回答
1

如果您需要使用默认不支持的 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
于 2012-10-24T15:16:49.283 回答