Rails用paperclip image.url多个url响应

时间:2018-04-14 08:30:43

标签: ruby-on-rails image url controller paperclip

我正在构建一个简单的rails应用程序,使用户能够上传一些图像。 现在我需要一个简单的控制器来返回图像的相关记录的网址,它们具有相同的id_attivita。 为此,我在控制器中创建一个函数,并在routes.rb文件中启用它。 我的问题是关于使用paperclip提供的image.url的属性valure响应http请求吗?

def getattached
  @photo_attivitum = PhotoAttivitum.where(id_attivita: params[:id_attivita])


 respond_to do |format|

 @photo_attivitum.each do |p|
    format.html { render :json => p.image.url}
  end
end

它有效,但只返回第一条记录的网址而不是其他四条记录的网址... 我该怎么办?

2 个答案:

答案 0 :(得分:1)

将以下gem添加到您的Gemfile

gem 'active_model_serializers'

然后使用bundle

安装它
bundle install

您可以按如下方式生成序列化程序

rails g serializer photo_attivitum

它将在

中创建Serializer类文件
# app/serializers/photo_attivitum_serializer.rb

class PhotoAttivitumSerializer < ActiveModel::Serializer
   attributes :id, :image_url

   def image_url
     object.image.url
   end 
end

在控制器中

def getattached
  @photo_attivitum = PhotoAttivitum.where(id_attivita: 
   params[:id_attivita])


  render json: @photo_attivitum
end

答案 1 :(得分:0)

不确定你想做什么?在json中显示所有图片网址?

    urls = @photo_attivitum.pluck('image_url')
    format.html { render :json => urls}