gpt4 book ai didi

ruby-on-rails-3 - 从不同的关联模型访问属性 rails 3

转载 作者:行者123 更新时间:2023-12-01 10:03:08 24 4
gpt4 key购买 nike

我希望更好地了解事件模型/记录关系以及如何根据属性所在的位置(模型)和我调用它们的位置来调用属性。因此,例如,我可以像这样从菜谱 Controller 中访问属性 dish_name

 def all_recipes
@recipes = Recipe.all
end

在 View 中

<% @recipes.each do |r| %>
<%= r.dish_name %>
<% end %>

现在假设我想从我的 Controller 中访问一个名为 worldrecipes 的食谱属性,并且我刚刚编写了一个方法来返回同一国家/地区的所有食谱。一个国家有很多食谱作为关系

所以我的方法是

def self.top_countries
joins(:recipes).
select('countries.*, count(*) AS recipes_count').
group('countries.id').
order('recipes_count DESC')
end

我的 Controller

@worldrecipes = Country.where(:name => params[:name])

并查看

<% @worldrecipes.each do |r|  %>
<%= r.name %>
<% end %>

所以访问国家名称属性很容易,因为它在国家模型中,那是我的查询结果从(我认为)返回的地方......我的问题是我如何从我的食谱模型访问 dish_name 属性到那个国家名称链接

希望这是有道理的,有没有人有关于如何解决这个问题的指南或一些黄金法则

谢谢

最佳答案

我想你需要的是:

@country=Country.where(:name=>params[:name]).first
@worldrecipes=@country.recipes

在 View 中:

<% @worldrecipes.each do |r|  %>
<%= r.dish_name %>
<% end %>

这将打印国家食谱的菜名,名称由 params[:name]

提供

编辑:好的,让我为您解决这个问题 :)

您的模型关系已设置为每个国家/地区都有许多食谱。即一个国家有很多食谱。

所以你有,

has_many :recipes

在 country.rb 和

belongs_to :country

在 recipe.rb 中

现在,当您想要访问属于一个国家/地区的所有食谱时,您要做的是调用 country_record.recipes(country_record 是您需要的国家/地区记录的对象)。

当你打电话时, Country.where(:name=>params[:name])您实际得到的是代表国家本身的事件记录对象,而不是国家的食谱,这就是打印意大利的原因。

希望这对你有帮助。

关于ruby-on-rails-3 - 从不同的关联模型访问属性 rails 3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13866307/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com