无法通过 Rails 5 中的 3 个模型访问字段



我正在尝试做一些与这个问题非常相似的事情

我有 4 个模型,其中一个(CoffeeBlend)是一个连接表:

class CoffeeRoast < ApplicationRecord
    has_many :coffee_blends
    has_many :coffee_beans, through: :coffee_blends
    has_one :country, through: :coffee_beans
end
class CoffeeBean < ApplicationRecord
    has_many :coffee_blends
    has_many :coffee_roasts, through: :coffee_blends
    belongs_to :country
end
class Country < ApplicationRecord
  has_many :coffee_beans
end
class CoffeeBlend < ApplicationRecord
    belongs_to :coffee_bean
    belongs_to :coffee_roast
end

我的coffee_beans表有一个名为 country_id 的列,其中填充了countries表中的 id。

在我的coffee_roasts_show中,我希望能够拉出咖啡豆的相关国家。我的最新尝试看起来像

<% @coffee_roast.coffee_beans.country.country_name %>

这给了undefined method 'country'

<% @coffee_roast.coffee_beans.countries.country_name %>

返回undefined method 'countries'

我的关联是否正确? 我的节目代码有误吗?

该方法@coffee_roast.coffee_beans返回关联,而不是单个记录。这就是为什么你不能就此打电话给#country。如果您需要所有国家/地区,则可以使用#map

<% @coffee_roast.coffee_beans.map {|cb| cb.country.country_name } %>

编辑:

如果您想在浏览器中显示列表,请在您的 ERB 标记中添加=

<%= @coffee_roast.coffee_beans.map {|cb| cb.country.country_name } %>

contry 名称显式转换为带有 Array#join 的字符串也可能很有用

<%= @coffee_roast.coffee_beans.map {|cb| cb.country.country_name }.join(', ') %>

相关内容

  • 没有找到相关文章

最新更新