将资产图像链接到存储在DB中的产品值

时间:2016-12-14 17:28:17

标签: database ruby-on-rails-4 paperclip

嗨,我想说我有一定数量的产品(例如5个产品)。在我的HTML表单中,如果我想使用表单显示所有产品,以便用户可以单击购买,我可以捕获用户点击的点击数据,我该怎么办?我也想展示产品的图片。

截至目前,这是硬编码。

%h1 <u>Fruit Basket</u>

.row
  .col-xs-10.col-sm-6.col-md-6.col-lg-4
    .thumbnail
      %img{:src => "assets/Garden3.jpg", :class => "FeedbackRegion"}/
      .caption
        %h3.PriceTag RM 60
        %button.btn.btn-primary.PurchaseBtn Purchase
        %p <b><u>Fruits:</b></u>
        %p Apple, Orange, Banana
        %p <b><u>Flowers :</b></u>
        %p Zebra, Chrysanthemum, Fern leafs

  .col-xs-10.col-sm-6.col-md-6.col-lg-4
    .thumbnail
      %img{:src => "assets/Garden3.jpg", :class => "FeedbackRegion"}/
      .caption
        %h3.PriceTag RM 80
        %button.btn.btn-primary.PurchaseBtn Purchase
        %p <b><u>Fruits:</b></u>
        %p Apple, Orange, Banana
        %p <b><u>Flowers :</b></u>
        %p Zebra, Chrysanthemum, Fern leafs

如何删除这些硬编码代码并使其动态,如果我添加其他新产品,我可以获取其信息及其“产品 IMAGE ”。我想过PAPERCLIP宝石,但似乎不是我需要的东西吗?如果我错了,请纠正我。

1 个答案:

答案 0 :(得分:0)

Paperclip正是您所需要的,但您需要首先正确使用模板。我假设你没有意识到你需要迭代你的产品,如果不是这样,请跳到第2步。

  1. 正如您所说,您对每个产品项目进行了硬编码,不仅仅是图像,还包括整个购买产品。不要那样做。在你的控制器中做一些事情,比如@products = Product.all,然后在视图中的嵌入式红宝石中做一些事情,比如
  2. @products.each do |p| image_tag "hi", p.image button_tag "other stuff" # etc.

    如果您不熟悉如何在视图中使用嵌入式ruby来从控制器加载资源,那么显然这是第一个;阅读文档以了解如何自己完成。

    1. 现在,您必须将p.image作为image列存储在您的商品数据库中。 Paperclip将为您完成此操作,这样您就可以直接从每个资源的数据库加载图像,以便每次都加载正确的图像。