Очень плохо знаком с Ruby и пытается настроить классическую структуру MVC User-Articles, но вместо этого использует Цели и Ключевые результаты.
Проблема:
NoMethodError in Home#index - undefined method `keyresults' for nil:NilClass
Вопрос:
Как определить отношение между целями и ключевыми результатами в контроллере?
Я полагаю, что здесь проблема.
Любойобъяснение того, как действовать, было бы удивительным!
Я пытался:
@objectives = Objective.all.include(:keyresult)
Но это не сработало.
Цель: наНа главной странице перечисляются все цели и связанные с ними ключевые результаты:
Цель 1
- Ключевые результаты 1
- Ключевые результаты 3
Цель 2
- Результат ключа 2
- Результат ключа 4
- Результат ключа 5
цель.rb
class Objective < ApplicationRecord
has_many :objectives_keyresults, dependent: :destroy
has_many :keyresults, through: :objectives_keyresults
keyresult.rb
class Keyresult < ApplicationRecord
belongs_to :objective
home_controller.rb
class HomeController < ApplicationController
def index
@objectives = Objective.all
end
index.html.erb
<%- model_class = Objective -%>
<% @objectives.each do |objective| %>
Objective:
<%= objective.title %>
Key Result:
<% @objective.keyresults.each do |keyresult| %>
<%= keyresult.title %>
<% end %>
<% end %>
schema.rb
create_table "keyresults", force: :cascade do |t|
t.string "title"
t.integer "objective_id"
t.index ["objective_id"], name: "index_keyresults_on_objective_id"
end
create_table "objectives", force: :cascade do |t|
t.string "title"
end
create_table "objectives_keyresults", force: :cascade do |t|
t.integer "objective_id"
t.integer "keyresult_id"
t.index ["keyresult_id"], name: "index_objectives_keyresults_on_keyresult_id"
t.index ["objective_id"], name: "index_objectives_keyresults_on_objective_id"
end
Спасибо за вашу помощь!