我有一个控制器响应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
答案 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