Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails使用oracle增强适配器发送_数据_Ruby On Rails_Oracle_Activerecord - Fatal编程技术网

Ruby on rails Rails使用oracle增强适配器发送_数据

Ruby on rails Rails使用oracle增强适配器发送_数据,ruby-on-rails,oracle,activerecord,Ruby On Rails,Oracle,Activerecord,检索作为blob存储在旧oracle数据库中的图像时遇到问题。当我转到http://server/images/id/type我收到一个没有将符号隐式转换为整数的错误 我有以下设置: GemFile gem 'rails', '3.2.13' gem 'activerecord-oracle_enhanced-adapter' gem 'ruby-oci8' CREATE TABLE "SCHEMA"."IMAGE_TABLE" ( "IMG_TYPE_SEQ_NO" NUMBER(12

检索作为blob存储在旧oracle数据库中的图像时遇到问题。当我转到
http://server/images/id/type
我收到一个
没有将符号隐式转换为整数的错误

我有以下设置:

GemFile

gem 'rails', '3.2.13'
gem 'activerecord-oracle_enhanced-adapter'
gem 'ruby-oci8'
CREATE TABLE "SCHEMA"."IMAGE_TABLE" 
(   "IMG_TYPE_SEQ_NO" NUMBER(12,0), 
"IMG_TYPE" VARCHAR2(10 BYTE), 
"IMG_DESC" VARCHAR2(60 BYTE), 
"IMG_LENGTH" NUMBER, 
"IMG_BLOB" BLOB
);
表格

gem 'rails', '3.2.13'
gem 'activerecord-oracle_enhanced-adapter'
gem 'ruby-oci8'
CREATE TABLE "SCHEMA"."IMAGE_TABLE" 
(   "IMG_TYPE_SEQ_NO" NUMBER(12,0), 
"IMG_TYPE" VARCHAR2(10 BYTE), 
"IMG_DESC" VARCHAR2(60 BYTE), 
"IMG_LENGTH" NUMBER, 
"IMG_BLOB" BLOB
);
型号

class Image < ActiveRecord::Base
self.table_name = 'schema.image_table'

def self.image_by_id_and_type(id, type)
  where(
    'img_type_seq_no = :id and img_type = :type',
     id: id, type: type
  )
end
类映像
控制器

class ImagesController < ApplicationController

  def show_image
    @image = Image.image_by_id_and_type(params[:id], params[:type])
    send_data @image[:img_blob], type: 'image/gif', disposition: 'inline'
  end

end
class ImagesController
我尝试过使用
send_data@image.img_blob
并得到一个
未定义的方法
错误

我做错了什么

谢谢, 克里斯

更新:


我想知道是否有类型转换的问题。blob映像通过JavaSwing应用程序持久化,该应用程序将其转换为java字节数组。这可能是问题所在吗?如果是这样,如何将java字节数组转换为send_data可以理解的内容?

这是一个猜测。请试一下

def show_image
    @image = GiftCardImage.image_by_id_and_type(params[:id].to_i, params[:type])
    send_data @image[:img_blob], type: 'image/gif', disposition: 'inline'
end
在您的模型中

class Image < ActiveRecord::Base
self.table_name = 'schema.image_table'

def self.image_by_id_and_type(id, type)
  where("img_type_seq_no = ? and img_type = ?", id, type)
end
类映像
正在返回一个ActiveRecord::Relation对象,因此为了从中获取实际值,我必须首先调用

send_data @image.first[:img_blob], type: 'image/gif', disposition: 'inline'

我修改了上面的示例,以删除可能导致混淆的特定域名。当我试图对它进行泛化时,我错过了它们。

你的建议虽然看起来更干净,但不起作用。我收到了相同的错误消息。