ruby-on-rails - 针对所有用户和所有文章的未定义方法

标签 ruby-on-rails ruby model-view-controller

这里是 Ruby 的新手,尝试建立经典的用户文章 MVC 结构,但改用目标和关键结果。

问题:

NoMethodError in Home#index - undefined method `keyresults' for nil:NilClass

问题:

如何在 Controller 中定义目标和关键结果之间的关系?

我想这就是问题所在。

任何关于如何进行的解释都会很棒!

我试过:

@objectives = Objective.all.include(:keyresult)

但这没有用。

目标:在索引页上列出所有目标及其相关的关键结果:

Objective 1

  • Key Result 1
  • Key Result 3

Objective 2

  • Key Result 2
  • Key Result 4
  • Key Result 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

感谢您的帮助!

最佳答案

在您的 block each 中,您使用了@objective。它是 nil

使用目标

<% @objectives.each do |objective| %>
  Objective:
  <%= objective.title %>
  Key Result:
  <% objective.keyresults.each do |keyresult| %>
    <%= keyresult.title %>
  <% end %>
<% end %>

关于ruby-on-rails - 针对所有用户和所有文章的未定义方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54841536/

相关文章:

ruby-on-rails - 将枚举与管理集成的正确方法是什么?

ruby - 将实例变量添加到 Ruby 中的类

ruby - 为什么我不能在Integer类中覆盖self?

javascript - 设置angularjs和不同的谷歌地图服务和功能的最 "angular way"是什么?

php - 从数据库获取图片路径并显示在前端(Octobercms)

c# - Dal(带有 Entity Framework )和模型层进入 MVC

javascript - Google map 未以部分 View 显示

ruby-on-rails - 用于验证目的的动态查找器方法

ruby-on-rails - Rails CSRF token 真实性和设计

ruby-on-rails - 动态模型验证