2012-10-24 60 views
0

我有一个控制器responds_tohtml和PNG(我动态加载图像,并将其呈现为文本)。这使控制器代码混乱,今天我发现respond_with,看起来非常酷,但我不知道如何使它与格式不同,比html,json和xml(如PNG)Ruby on Rails的respond_with和图像格式

我期待这会工作,但它剧照试图找到一个模板文件,而忽略我的方法:(

型号/ 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

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

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

,并重新启动应用程序

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 
+0

我尝试了MIME类型注册,但它仍然给我“模板丢失” 我知道respond_to然后format.png将工作,因为它目前是这样的,但我希望它可以被移动模型如to_json和to_xml,以便控制器只能调用respond_with –