【问题标题】:How to upload image using paperclip without model in Rails 3?如何在 Rails 3 中使用没有模型的回形针上传图像?
【发布时间】:2013-11-06 06:43:41
【问题描述】:

我想在没有模型的情况下在 Rails 3.2 中实现 Papereclip

我对 RoR 和 Paperclip 很陌生。

我按照THIS 教程使用回形针。运行成功。

但是在本教程中他们已经展示了模型的使用,我不想使用模型或者不想修改现有模型。

【问题讨论】:

  • 您将需要一个模型来至少保存图像的 URL,否则使用 Paperclip 有什么意义?您也可以查看Ryan Bate's railscasts about paperclip
  • 我们需要 url 在 webservice 的响应中返回给用户,我认为我们不需要存储在数据库中。
  • 我不确定这是什么意思?
  • 我有点困惑,使用回形针时是否必须将url存储在数据库中?

标签: ruby-on-rails ruby ruby-on-rails-3.2 paperclip image-uploading


【解决方案1】:

Rails 是面向对象的。

# Article model
attr_accessible :image
# Paperclip attachment code and whatever rules and conditions you want.

图像属性实际上是数据库中的一列,并且是可以从您的文章模型访问的属性。该图像属性需要是字符串类型(varchar)来存储保存图像的 url。

例如,如果您的文章具有图像属性,则在您的视图文件 Article#Show 中,您可以通过 article 对象 显示您的图像,其中 image 属性 为 @987654322 @。

如果您想在同一篇文章中包含许多图片,那么您需要创建 2 个模型(文章和图片)并在哪里建立关联

 # Article model
 has_many :images
 accepts_nested_attributes_for :images

 # Image model
 attr_accessible :image_url
 belongs_to :article
 # paperclip attachments...

通过此关联,您可以通过以下方式获取并显示您的图像

<% @article.images.each do |image| %>
    <%= image_tag image.image_url.url %>
<% end %>

从技术上讲,您不需要将图像的 url 存储在数据库中,您可以将其存储在变量中,但它只会在会话期间有效,之后会消失。如果您想在以后查看您的图像,那么是的,您需要将其存储在数据库中。

【讨论】:

  • 如何将它存储在变量中?
  • 如果您知道图像的地址,您可以将其存储在变量中并使用&lt;%= image_tag my_image_variable %&gt;,其中my_image_variable = "http://someurlpath.com/my_image.jpg"。这可以通过编程方式完成,但您的变量将消失。否则,您需要对变量进行硬编码。在这种情况下,image_url(从数据库中获取)和my_image_variable 都是字符串类型。您也不需要使用回形针。
【解决方案2】:

如果不使用单独的模型,您可以查看Paperclip Docs。这里基本上做的就是将图像存储为现有模型的属性。

关于根本不使用模型,您希望如何将图像对象与某些现有记录相关联?在您的项目中不需要吗?

【讨论】:

  • 实际上我们需要在webservice的响应中给出url,我们不想将它存储在数据库中。
  • 因此您必须将图像的 url 保存在数据库中(存储在单独的模型中或作为现有模型的属性),以便可以检索它以发送响应webservice,还是我误解了你的目标?
  • 是的,我认为我们需要单独的模型来维护 url,基本上我是 RoR 的新手,所以不知道该怎么做......
  • 你可以参考回形针维基。如果您每条记录仅存储 1 张图像,那么我建议您将其存储为现有模型的属性。当您以后需要存储许多图像时,您可能可以重构代码并为 Paperclip 创建一个新模型以使用并创建关联以在每条记录中存储许多图像。我希望这能让你朝着正确的方向前进。
猜你喜欢
  • 2012-07-03
  • 2018-08-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-14
  • 1970-01-01
  • 2011-12-05
相关资源
最近更新 更多