Rails的nil:NilClass错误未定义方法'id'

时间:2019-08-25 12:21:54

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

  

我试图将数据从postsmark_term模型获取到视图,但出现错误。

短语术语模型:

QuizExecution.vue

phrases_terms_controller.rb

Phrases_term(id, term_id, phrase_id)

Phrases_term展示视图show.html.erb:

class PhrasesTermsController < ApplicationController
  before_action :authenticate_user!
  before_action :set_term

  def new
    @phrases_term = PhrasesTerm.new
  end

  def create
    @phrases_term = @term.phrases_terms.new(phrases_term_params)
    if @phrases_term.save
      redirect_to term_phrases_term_path(@term, @phrases_term), notice: "Phrases_Term was successfully created"
    else
      render "new"
    end
  end

  private

  def phrases_term_params
    params.require(:phrases_term).permit(:term_id, :phrase_id)
  end

  def set_term
    @term = Term.find(params[:term_id])
  end
end

我得到的错误:

  

错误:nil:NilClass的未定义方法'id'

1 个答案:

答案 0 :(得分:0)

您收到MyIterator错误,因为您的undefined method 'id' for nil:NilClass视图不知道show.html.erb是什么。因此,在尚不存在的变量上调用@phrases_term方法会引发错误。您需要在正确的动作下的正确控制器中定义要使用的变量。因此添加:

id
def show @phrases_term = PhrasesTerm.find(params[:id]) end 中的

应该可以解决该错误。