获取错误显示用户购买时,表现出他购买的产品时,我得到的产品形象和标题错误(Getting error

2019-10-23 03:18发布

这是记录购买的关系,我有用户之间,千兆(产品),和购买表格。

class User < ActiveRecord::Base
  has_many :gigs
  has_many :purchases, foreign_key: 'buyer_id'
  has_many :sales, foreign_key: 'seller_id', class_name: 'Purchase'
end

class Gig < ActiveRecord::Base
  has_many :purchases
  has_many :buyers, through: :purchases
  has_many :sellers, through: :purchases
end

class Purchase < ActiveRecord::Base
  belongs_to :gig
  belongs_to :buyer, class_name: 'User'
  belongs_to :seller, class_name: 'User'
end

为了记录购买我在控制器使用

 def downloadpage
    ActiveRecord::Base.transaction do
      if current_user.points >= @gig.pointsneeded 
        @purchase = current_user.purchases.create(gig: @gig, seller: @gig.user)
        if @purchase
          current_user.points -= @gig.pointsneeded
          @gig.user.points += @gig.pointsneeded
          current_user.save
          if @gig.user.save
            render 'successful_download', locals:{link:@gig.boxlink}
          end
        end
      else
        redirect_to :back, notice: "You don't have enough points"
      end
    end
  end

一切正常当买方从卖方购买东西时,点账户之间转移,而买方被重定向到最后一次演出。

在我的意见,我可以做

<h1>You downloaded <%= current_user.purchases.count %> boxes</h1>

它会显示“音乐会”做买家的数量。

现在,我想说明不只是数量,但标题和他bought.This产品的图片是我的尝试

<div class="row experiment">
      <% current_user.purchases.each do |gig| %>
      <div class="well for-h1-gig-second col-xs-6 col-sm-4 col-lg-3 ">
        <%= link_to (image_tag gig.image.url(:medium), :class=>"img-responsive"), gig %>
        <h1><%= link_to gig.title, gig %></h1>
      </div>
      <% end %>
    </div>

但它说,它无法找到的形象和称号。 所以我尝试current_user.purchases.gig.each do |gig| 没有成功。

我如何解决它? PS:请随时编辑我的头衔,为未来的读者,我不能更好地制定,谢谢。

Answer 1:

你的主要问题是, current_user.purchases.each通过购买迭代-没有演出。

<div class="row experiment">
    <% current_user.purchases.each do |purchase| %>
    <% gig = purchase.gig %>
    <div class="well for-h1-gig-second col-xs-6 col-sm-4 col-lg-3 ">
        <%= link_to(image_tag gig.image.url(:medium), :class=>"img-responsive"), gig %>
        <h1><%= link_to gig.title, gig %></h1>
    </div>
    <% end %>
</div>

另外的一些其他问题:

class User < ActiveRecord::Base
  has_many :gigs # not going to work.
end

它是行不通的原因是,之间的关系usergig经历purchasesbuyer_idseller_id外键。 Rails不支持依赖于多个键关系。

如果你想选择的演出,其中用户要么是卖方或买方可以使用:

Gig.joins(:purchases).where('purchases.buyer_id=? OR purchases.seller_id=?', [current_user.id, current_user.id])


Answer 2:

尝试添加用户的关联:

class User < ActiveRecord::Base
  has_many :purchases, foreign_key: 'buyer_id'
  has_many :gigs, through: :purchases, source: :buyer
  has_many :sales, foreign_key: 'seller_id', class_name: 'Purchase'
end

然后,你应该能够遍历current_user.gigs



文章来源: Getting error when showing the purchases of the user,when showing the product he bought i get an error for product image and title