Я новичок в RoR.Как мне перемещаться по объекту и его вложенным объектам, прежде чем переходить к следующему объекту в Rails?
То, что я пытаюсь выполнить это цикл по списку service_types
(тормоза, барабаны, колодки и т.д. ...) в service
категории (тормоза), принадлежащие к каждой технологии, прежде чем переходить к следующий service
категория (подвеска).
У меня есть установки с помощью:
Gems
devise: user signup
cocoon: customizable nested objects
Мой взгляд от моих услуг/show.html.erb
<tbody>
<% @services.each do |service| %>
<tr>
<td><%= service.name %></td>
<td><%= **??? Don't know how to cycle through to capture the tech's list `services` and `service types**` %>
</tr>
<% end %>
</tbody>
сервис .rb модель
class Service < ActiveRecord::Base
has_many :service_types
belongs_to :tech
accepts_nested_attributes_for :service_types, :reject_if => :all_blank, :allow_destroy => true
end
techs_controller.rb
class TechsController < ApplicationController
def index
@techs = Tech.all
@services = Service.all
end
def show
@tech = Tech.find(params[:id])
@services = @tech.services.all
#@service_types = @service.service_types.all
end
end
технологий.гь модели (БД со списком санитаров - зарегистрированная через devise
драгоценного камня)
class Tech < ActiveRecord::Base
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
has_many :service_types
has_many :services
has_many :appointments
has_many :customers, :through => :appointments
end
Отредактировано - 5/25 [Причина: ошибка копирование паста/опечатка]
Услуга (содержит данные со списком основных категорий услуг)
mysql> describe services;
+------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(255) | YES | | NULL | |
| created_at | datetime | NO | | NULL | |
| updated_at | datetime | NO | | NULL | |
| tech_id | int(11) | YES | | NULL | |
+------------+--------------+------+-----+---------+----------------+
В tech_id
ссылки запись в tech
дб
ServiceType (из кокона драгоценного камня, который позволяет мне создавать вложенные типы услуг с несколькими пользовательскими атрибутами)
mysql> describe service_types;
+-------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(255) | YES | | NULL | |
| description | varchar(255) | YES | | NULL | |
| time | varchar(255) | YES | | NULL | |
| price | decimal(8,2) | YES | | NULL | |
| decimal | decimal(8,2) | YES | | NULL | |
| service_id | int(11) | YES | MUL | NULL | |
| created_at | datetime | NO | | NULL | |
| updated_at | datetime | NO | | NULL | |
+-------------+--------------+------+-----+---------+----------------+
В service_id
ссылки на запись в services
дб
После нескольких дней исследований ближайший я пришел, чтобы выполнить то, что я хотел, это fr ом мой взгляд:
<tbody>
<% @services.each do |service| %>
<tr>
<td><%= service.name %></td>
<td><%= service.service_types.all.collect{|s| [s.name, s.time, s.price} %></td>
</tr>
<% end %>
</tbody>
</table>
выше производит это:
Brakes [["Rotors", 1HR], ["Drums", 1HR]]
Что я ищу для этого вывода является следующее:
Ниже выходной я ищу для:
+---------+----------+-----+-------+
| Brakes | Type | Time | Price |
+---------+--------+-------+-------+
| Rotors | 1HR | 100 |
| Drums | 1HR | 100 |
+-------------+----------+-----+-------+
| Suspension | Type | Time | Price |
+-------------+--------+-------+-------+
| Struts | 2HR | 100 |
| Shocks | 1HR | 100 |
Я хотел бы пройти через service
(тормоза) и все вложенные service_types
перед тем, как перейти на велосипедную прогулку по следующему service
Категория (подвеска).
Любая помощь будет оценена по достоинству. Благодаря
- что такое 'сервис'? можете ли вы опубликовать его определение? – daslicious
Приносим извинения, я добавил сервисную модель. –