无法通过 Rails 5 中的 3 个模型访问字段
Can't access field through 3 models in Rails 5
我正在尝试做一些与此非常相似的事情
我有 4 个模型,其中一个 (CoffeeBlend) 是一个连接 table:
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
table 有一个名为 country_id
的列,其中填充了 countries
table.
中的 ID
在我的coffee_roasts_show
我希望能够拉出咖啡豆的关联国家。我最近的尝试看起来像
<% @coffee_roast.coffee_beans.country.country_name %>
这给出 undefined method 'country'
或者
<% @coffee_roast.coffee_beans.countries.country_name %>
returns undefined method 'countries'
我的联想正确吗?我的显示代码有误吗?
方法@coffee_roast.coffee_beans
returns你关联了,没有单条记录。这就是为什么你不能在上面调用 #country
的原因。如果你需要所有国家,你可以使用 #map
:
<% @coffee_roast.coffee_beans.map {|cb| cb.country.country_name } %>
编辑:
如果您想在浏览器中显示列表,请在您的 ERB 标记中添加 =
:
<%= @coffee_roast.coffee_beans.map {|cb| cb.country.country_name } %>
使用 Array#join
将国家名称显式转换为字符串可能也很有用
<%= @coffee_roast.coffee_beans.map {|cb| cb.country.country_name }.join(', ') %>
我正在尝试做一些与此非常相似的事情
我有 4 个模型,其中一个 (CoffeeBlend) 是一个连接 table:
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
table 有一个名为 country_id
的列,其中填充了 countries
table.
在我的coffee_roasts_show
我希望能够拉出咖啡豆的关联国家。我最近的尝试看起来像
<% @coffee_roast.coffee_beans.country.country_name %>
这给出 undefined method 'country'
或者
<% @coffee_roast.coffee_beans.countries.country_name %>
returns undefined method 'countries'
我的联想正确吗?我的显示代码有误吗?
方法@coffee_roast.coffee_beans
returns你关联了,没有单条记录。这就是为什么你不能在上面调用 #country
的原因。如果你需要所有国家,你可以使用 #map
:
<% @coffee_roast.coffee_beans.map {|cb| cb.country.country_name } %>
编辑:
如果您想在浏览器中显示列表,请在您的 ERB 标记中添加 =
:
<%= @coffee_roast.coffee_beans.map {|cb| cb.country.country_name } %>
使用 Array#join
<%= @coffee_roast.coffee_beans.map {|cb| cb.country.country_name }.join(', ') %>