首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails错误. nil:NilClass的未定义方法‘`id’

Rails错误. nil:NilClass的未定义方法‘`id’
EN

Stack Overflow用户
提问于 2019-08-25 12:21:54
回答 1查看 177关注 0票数 1

我试图将数据从phrases_term模型获取到视图,但我得到了一个错误。

Phrases_term模型:

代码语言:javascript
复制
Phrases_term(id, term_id, phrase_id)

phrases_terms_controller.rb

代码语言:javascript
复制
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:

代码语言:javascript
复制
<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的未定义方法“`id”

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-25 13:54:28

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

代码语言:javascript
复制
def show
  @phrases_term = PhrasesTerm.find(params[:id])
end

在您内部,phrases_terms_controller.rb应该解决错误。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57645962

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档