【问题标题】:Rails error-undefined method `id' for nil:NilClass用于 nil:NilClass 的 Rails 错误未定义方法“id”
【发布时间】:2019-08-25 12:21:54
【问题描述】:

我正在尝试将数据从 phrases_term 模型获取到视图,但我遇到了错误。

Phrases_term 模型:

Phrases_term(id, term_id, phrase_id)

phrases_terms_controller.rb

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

Phrases_term 显示视图,show.html.erb:

<div class="container">
<table class="table">
    <thead>
      <tr>
        <th>ID</th>
        <th>Phrases_ID</th>
        <th>Term_ID</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td><%= @phrases_term.id %></td>
        <td><%= @phrases_term.term_id %></td>
        <td><%= @phrases_term.phrase_id %></td>
  </table>
<%= link_to 'Back', terms_path %> |
<%= link_to 'Edit', edit_term_path %> 
</div>

我得到的错误:

错误:nil:NilClass 的 Eundefined 方法 `id'

【问题讨论】:

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


    【解决方案1】:

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

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

    在你phrases_terms_controller.rb 应该可以解决这个错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多