Ruby 显示用户购买的产品时出错,显示用户购买的产品时,我会在产品图像和标题上出错

Ruby 显示用户购买的产品时出错,显示用户购买的产品时,我会在产品图像和标题上出错,ruby,database,ruby-on-rails-4,model-view-controller,model,Ruby,Database,Ruby On Rails 4,Model View Controller,Model,这是用户、Gig(产品)和记录购买的购买表之间的关系 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 :purch

这是用户、Gig(产品)和记录购买的购买表之间的关系

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
当买主从卖主那里买东西,积分在账户之间转移,买主被重定向到最后的演出时,一切都正常

在我看来,我能做到

<h1>You downloaded <%= current_user.purchases.count %> boxes</h1>
您下载了多个框
它将显示买家的“演出”数量

现在我想展示的不仅仅是他买的产品的编号,还有标题和图片。这就是我尝试的

<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>

“img响应”),gig%>
但是它说,它找不到图片和标题。 所以我尝试了
current_user.purchases.gig.each do|gig
没有成功

我怎么修理它? 附言:请随意编辑我的标题,对于未来的读者,我无法更好地表达它,谢谢


尝试在用户上添加关联:

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
class用户

然后,您应该能够在当前用户之间循环。gig

尝试在用户上添加关联:

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
class用户

然后,您应该能够循环查看当前的用户.gig

您的主要问题是
当前的用户.purchases。每个
都会迭代购买,而不是gig

<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>

您的主要问题是
当前用户购买。每个
都会迭代购买,而不是GIG

<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>

很抱歉,我在问题中没有提到,我的“用户”模型中已经有很多:gigs,我试图用你的建议替换它,但它仍然给出一个错误,它无法找到他购买的产品的图像和标题。你说“通过当前的用户.gigs循环”,我想它会显示用户自己上传的gigs,不是他从其他用户那里下载的,如果我错了,请更正。同样,使用我当前的代码,我可以使用“current_user.gigs”,它可以工作,但显示用户上传的gigs,而不是他购买的gigs。当我使用“current_user.purchases.count”时,它可以工作并显示下载的数量,但如果我尝试显示带有标题和图像的gigs,它说它找不到它,也许它应该像current_user.purchases.gigs…但它仍然不起作用。你不能做current_user.purchases.gigs,因为你的关联设置为另一种方式,一个gig有很多购买,它必须是current_user.gigs.purchases。如果我做current_user.gigs.purchases,它给出了一个错误:未定义的方法'purchases',但如果我使用“current_user.gigs”或“current_user.purchases”,它会起作用。这仍然不是一个好主意-关联名
gigs
非常模糊,如果不打开类,你就无法真正判断它的售出单位
Sald_gigs
您在上一个示例中使用的更好。很抱歉,我在问题中没有提到,我的“用户”模型中已经有很多:gigs
,我试图用您的建议替换它,但仍然会出现一个错误,它无法找到他购买的产品的图像和标题。您说“通过当前的_user.gigs循环“,我想它会显示用户自己上传的,而不是他从其他用户下载的,如果我错了,请更正。同样,使用我当前的代码,我可以使用‘current_user.gigs’,它可以工作,但显示用户上传的,而不是他购买的。当我使用‘current_user.purchases.count’时,它可以工作并显示下载的数量,但是如果我试着展示这些gig的标题和图片,它说找不到它,也许应该是类似于current_user.purchases.gigs的东西…但它仍然不起作用。你不能做current_user.purchases.gigs,因为你的关联设置为另一种方式,一个gig有很多购买,它必须是current_user.gigs.purchases。如果我做current_user.gigs.purchases,它会给出一个错误:未定义的方法'purchases',但如果我做“current_user.gigs”或“current_user.purchases”,它会起作用。仍然不是一个好主意-关联名称
gigs
非常模糊,如果不打开这个类,你就无法真正判断它的售出单位
Sald_gigs
您在前面的示例中使用的更好。您将在gig controller中的何处使用您的解决方案?在“def downloadpage”操作中?如果我删除
has_many:gigs
我将无法使用
当前用户。gigs
,我尝试删除它,但我无法再使用它,它会给出一个错误,没有该行。如果你想访问用户出售/购买的gigs,你可以按照NoobExceptions answer中的方式设置关系。如果两者都需要,请使用
@gigs=Gig.joins(:purchases)。其中('purchas
…在gig控制器中,您在哪里使用您的解决方案?在'def downloadpage'操作中?如果我删除
有很多:gig
我将无法使用
当前用户。gig
,我尝试将其删除,并且我无法再使用它,它会给出一个错误,没有该行。如果您想访问由用户出售/购买的gig,请与我们合作uld在NoobeExceptions answer中设置关系。如果您需要两者,请使用
@gigs=Gig.joins(:purchases)。其中('purchas
。。。
Gig.joins(:purchases).where('purchases.buyer_id=? OR purchases.seller_id=?', [current_user.id, current_user.id])