【问题标题】:Rails: undefined method from a loop with no record?Rails:来自没有记录的循环中的未定义方法?
【发布时间】:2013-11-05 18:49:57
【问题描述】:

我正在循环一个表以获取一些值,然后我尝试循环另一个表以获取更多项目:

我的Business表如下所示

id        name          
1         Business 1    
2         Business 2   

商业照片表格:

id        default_pic       business_id
1         blahblah.jpg      1

所以如果我想循环:

<% @b.each do |b| %>
   <%= b.name %>
   <%= b.business_photos.default_pic %>
<% end %>

我得到undefined method defaul_pic? 我相信是因为在第二个循环之后它得到Business 2 时没有更多记录。什么是检查记录关联的 Rails 方法,所以我没有收到此错误?

这是我的模型的外观:

class Business < ActiveRecord::Base
  has_many :business_photos
end

class BusinessPhoto < ActiveRecord::Base
  belongs_to :business
end

【问题讨论】:

  • 什么是@b?你能提供完整的视图文件吗?并请提供完整的错误。

标签: ruby-on-rails ruby ruby-on-rails-3 activerecord ruby-on-rails-3.2


【解决方案1】:
<%= b.business_photos.default_pic if defined?(b.business_photos.default_pic) %>

这是一个条件 if 语句,我们每次想要包含变量时都使用 & 不确定它是否已设置。我一直在寻找可以防止错误通过 .each 显示的东西(会从视图中提取很多逻辑),但我还没有找到一个

【讨论】:

  • 这行得通。也许其他人会有关于 .each 的答案
猜你喜欢
  • 1970-01-01
  • 2022-10-15
  • 1970-01-01
  • 2016-04-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-17
  • 1970-01-01
相关资源
最近更新 更多