Простейший альтернативный метод:
включите в свой класс
include Rails.application.routes.url_helpers
моя модель в качестве примера, чтобы получить изображения со скрепками абсолютный URL:
class Post < ActiveRecord::Base
include Rails.application.routes.url_helpers
validates :image, presence: true
has_attached_file :image, styles: { :medium => "640x", thumb: "100x100#" } # # means crop the image
validates_attachment_content_type :image, :content_type => /\Aimage\/.*\Z/
def image_url
relative_path = image.url(:medium)
self.add_host_prefix relative_path
end
def thumb_url
relative_path = image.url(:thumb)
self.add_host_prefix relative_path
end
def add_host_prefix(url)
URI.join(root_url, url).to_s
end
end
и в контроллере:
class Api::ImagesController < ApplicationController
def index
@posts = Post.all.order(id: :desc)
paginated_records = @posts.paginate(:page => params[:page], :per_page => params[:per_page])
@posts = with_pagination_info( paginated_records )
render :json => @posts.to_json({:methods => [:image_url, :thumb_url]})
end
end
наконец: добавить
Rails.application.routes.default_url_options[:host] = 'localhost:3000'
в:
Your_project_root_deir/config/environments/development.rb
хотя помощники могут быть доступны только в представлениях, но это рабочее решение.