2017-05-11 8 views
0

私はviews/products/show.html.erbRuby on railsアプリで製品画像の下にランダムな画像を表示できませんか?

views/products/show.html.erb

<div class="col-xs-12 col-sm-6 center-block" > 

    <%= image_tag @product.image.url(:medium), class: "img-responsive" %> 
    #This is the Product image# 
    ##EDITED ## 
    #Below is the codesnippet for three products to appear## 
    <% @products.each do |product| %> 
    <div class="col-sm-2 center-block " > 

<%= link_to product_path (product) do %> 
      <%= image_tag product.image.url(:thumb), class: "img-responsive" %> 
     <% end %> 

    <div class="product_description"> 

     <h5><%= link_to product.title, product %></h5> 
    </div> 
    </div> 
<% end %> 

そして、私の中に見られるように、これまでのところ、私は、製品の画像の下にこのコードを挿入した商品の画像下記の3枚のランダム商品の画像を表示できるようにしたいですproducts_controller.rb私はこのコードを持っていますが、問題は@productsで見つかるはずですが、私はそれが何であるか分かりません。誰かにアドバイスをお願いします。

products_controller.rb

class ProductsController < ApplicationController 
    before_action :set_product, only: [:show, :edit, :update, :destroy] 


    def show 
    @meta_title = "Concept Store #{@product.title}" 
    @meta_description = @product.description 
    @products = Product.all ###EDITED### 
    end 

    private 
    # Use callbacks to share common setup or constraints between actions. 
    def set_product 
    @product = Product.find(params[:id]) 
    end 

    # Never trust parameters from the scary internet, only allow the white list through. 
    def product_params 
    params.require(:product).permit(:title, :description, :price_usd, :price_isl, :image, :category_id, :stock_quantity, :label_id, :query, :slug) 
    end 
end 

マイモデルProductsCategoriesは持っている関係

product.rb

class Product < ActiveRecord::Base 
belongs_to :category 
belongs_to :label 

has_many :product_items, :dependent => :destroy 

extend FriendlyId 
friendly_id :title, use: [:slugged, :finders] 

    validates :title, :description, presence: true 
    validates :price_usd, :price_isl, numericality: {greater_than_or_equal_to: 0.01} 
    validates :title, uniqueness: true 

has_attached_file :image, styles: { medium: "500x500#", thumb: "100x100#" } 
validates_attachment_content_type :image, content_type: /\Aimage\/.*\z/ 
end 

category.rb

class Category < ActiveRecord::Base 

has_many :products, :dependent => :nullify 

extend FriendlyId 
friendly_id :name, use: [:slugged, :finders] 
end 
+0

私は 'each_slice'とは思っていません。 [ドキュメントをチェックしてください](https://ruby-doc.org/core-2.2.0/Enumerable.html#method-i-each_slice)。 – coreyward

答えて

1

のは、この分解してみましょう:Productインスタンスの

@products = Category.joins(:products).where(:products => {:id => @product.image}) 
  • @products大丈夫、おそらくコレクションを うーん、これはIDが@product.imageにマッチした製品でCategory
  • where(products: { id: @product.image })待ち時間、フィルタのインスタンスを返しますCategory.joins(:products)
  • 表面的には文字列のURLまたはファイルパスです

すべて一緒に:@products =特定の製品の特定の文字列に数値IDが一致する関連製品のカテゴリの配列。

review the Rails Guidesに私のお勧めは、ActiveRecord Basicsに特に注意してください。

+0

ありがとう、私は多くのものを複雑にしていた。私は '@products = Product.all'をやって終わりました。私は3つの画像をランダムに表示する方法を見つけなければなりません。 – Slowboy

+1

http://stackoverflow.com/questions/2752231/random-record-in-activerecord – coreyward

関連する問題