Ruby on rails 如何通过关系访问has_many中的属性?
如何在此处访问店铺名称?@deal instance可以访问完美的商品名称,但当我尝试访问店铺名称时,它会给我Ruby on rails 如何通过关系访问has_many中的属性?,ruby-on-rails,ruby-on-rails-3,ruby-on-rails-3.1,has-many-through,Ruby On Rails,Ruby On Rails 3,Ruby On Rails 3.1,Has Many Through,如何在此处访问店铺名称?@deal instance可以访问完美的商品名称,但当我尝试访问店铺名称时,它会给我 no method error 'stores' 如何让store实例访问store name?这是代码。提前谢谢 控制器 def show unless session[:city_id].nil? || session[:city_id].blank? @city = City.find(session[:city_id]) @deal=@city.deals
no method error 'stores'
如何让store实例访问store name?这是代码。提前谢谢
控制器
def show
unless session[:city_id].nil? || session[:city_id].blank?
@city = City.find(session[:city_id])
@deal=@city.deals
@store=@deal.stores
end
查看/显示
<% @deal.each do |deal| %>
<%=deal.item_name %>
<%end%>
<%=@store.store_name %>
模型
class Store < ActiveRecord::Base
has_many :deals ,:through =>:store_deals
has_many :store_deals
end
class Deal < ActiveRecord::Base
has_many :stores ,:through =>:store_deals
has_many :store_deals
end
class StoreDeal < ActiveRecord::Base
belongs_to :store
belongs_to :deal
end
类存储:store\u交易
有很多:商店交易
结束
类处理:store\u交易
有很多:商店交易
结束
类StoreDeal
@交易很可能是一系列交易@city.deals意味着每个城市可以有多个交易。这会在你尝试这样做时引起问题
@deal=@city.deals
@store=@deal.stores
尝试以下方法:
@deals = @city.deals
@stores = @deals.collect(&:stores)
我只是试着给我一个…你没有想到的时候却得到了一个零的对象!您可能期望数组的一个实例。计算nil.collect时出错此处的命名可能会混淆,从{at}deal更改为{at}deals,如果您更改了控制器中的变量,请确保您已将所有调用更改为{at}deal(注释中的@符号类似于facebook,这就是为什么我有{at})。也许我应该问一下是什么。collect(&:stores)return?您正在遍历deals数组并调用每个Deal对象上的stores。结果得到@stores中的stores。现在我想,您可能也想在其上加一个.uniq,这样您就不会得到潜在的重复项。