【发布时间】:2015-01-28 03:48:17
【问题描述】:
我一直在查看 Rails 文档,但遇到了一个问题,即尝试访问 has_many / belongs_to 关系中的数据。我有 3 个数据模型,如下所示:
class Cuisine < ActiveRecord::Base
has_many :providers
validates :name, presence: true, uniqueness: true
end
class Provider < ActiveRecord::Base
belongs_to :cuisine
has_many :lunches
validates :name, presence: true, uniqueness: true
validates :cuisine, presence: true
end
class Lunch < ActiveRecord::Base
belongs_to :provider
default_scope -> { order('created_at DESC') }
validates :date, presence: true, uniqueness: true
end
我的主要问题是 - 如何显示与提供者关联的午餐模型中的数据? IE。 provider.lunches.lunchscore 在 提供者的 show.html.erb 内?
有关更多上下文,这是我的 providers_controller.rb:
def show
@provider = Provider.find(params[:id])
@lunches = @provider.lunches
@cuisine = @provider.cuisine
end
我正在编辑提供程序视图的 show.html.erb,并且希望显示与提供程序相关的数据。
按照railstutorial.org 的教程,我包含了一个基于(我相信)一个集合的部分。所以,views/providers/show.html.erb 有这样的布局:
<% if @provider.lunches.any? %>
<h3> Total Lunches - (<%= @provider.lunches.count %>) </h3>
<%= render @lunches %>
<br>
<% end %>
@lunches 变量(我认为它是一个集合?)然后加载位于 apps/views/lunches/_lunch.html.erb 中的 _lunch.html.erb 部分,其中包含以下内容:
<ul>
<span class="date-score"><%= number_to_percentage(lunch.lunchscore * 100, precision: 0) %> </span>
<span class="date-list"> <%= link_to lunch.date.strftime("%A %B %e, %G"), lunch_path(lunch.id) %> - <%= link_to @provider.name, lunch_path(lunch.id) %> Likes <%= lunch.liked %> </span>
</ul>
这实际上效果很好 - 直到我想在 if 语句之外(以及完全在部分之外)加载数据 并将其直接包含在 app/views/providers/show.html 中。厄伯。例如,午餐模型具有以下属性:
:date, :liked, :disliked, :enough, :not_enough, :provider_id
我的问题:如果我不想通过 if 语句迭代和打印每个值,我如何从 providers/show.html.erb 模型中访问和聚合属性部分?
如果我尝试在提供程序 show.html.erb 文件中包含这些基本内容,则会出错:
<%= @provider.lunches.lunchscore.average %>
感谢您的帮助。如果我使用了错误的命名法(即数据模型属性或哈希作为集合),我深表歉意,我只是在学习,也是 Stack Exchange 的新手。随时纠正我。
【问题讨论】:
标签: ruby-on-rails