使用"paperclip"时出错



我使用gem"回形针",我不知道如何正确使用它。一直有一些错误。

[ab5aaf0e-3255-49d7-bc59-233aceed581f3] NoMethodError (undefined 方法 '+' for nil:NilClass(:

[ab5aaf0e-3255-49d7-bc59-233aced581f3] app/models/photo.rb:11:in "as_json"

[ab5aaf0e-3255-49d7-bc59-233aced581f3] app/controllers/photos_controller.rb:8:in 'index'

我做错了什么?

控制器:

class PhotosController < ApplicationController
def index
@photos = Photo.all
render json: @photos
end
private
def photo_params
params.permit(
:users_id, 
:photo
)
end
end

型:

class Photo < ActiveRecord::Base
self.primary_key = "users_id"
has_attached_file :photo, styles: {default: "150x150>"}, default_url: "/images/empty_photo.png", preserve_files: false
validates_attachment_content_type :photo, content_type: ["image/jpg", "image/jpeg", "image/png"]
def as_json(options={})
super(options).merge({users_id: users_id,
photo: {
default_url: ENV['root_url'] + photo.url(:default),
original_url: ENV['root_url']+photo.url,
},
})
end
def image_from_url(url)
self.photo = URI.parse(url)
end

def reprocess_image
photo.reprocess!
end
end

发生此问题是因为ENV['root_url']返回nil

尝试替换ENV['root_url']Rails.application.routes.url_helpers.root_url

错误显示ENV['root_url']photo.url(:default)为零。我想这是ENV变量。

就个人而言,我会使用视图而不是as_json方法来生成 json 响应,因为模型无法访问当前请求,但视图可以访问,因此您可以执行类似URI(request.url)+photo.url(:default)

#views/photos/index.json.jbuilder (I use Jbuilder for json templates)
json.array! @photos do |photo|
json.l_users_id photo.l_users_id
json.photo do
json.default_url URI(request.url)+photo.photo.url(:default)
json.original_url URI(request.url)+photo.photo.url
end
end

最新更新