gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 07:51:35 25 4
gpt4 key购买 nike

这里是 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com