我试图将数据从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
endPhrases_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的未定义方法“`id”
发布于 2019-08-25 13:54:28
您得到了一个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应该解决错误。
https://stackoverflow.com/questions/57645962
复制相似问题