研究中的NoMethodError #index

时间:2016-01-16 19:15:36

标签: ruby-on-rails

我尝试在类似于官方教程http://guides.rubyonrails.org/getting_started.html的轨道上创建应用程序,但是我使用了这些研究而不是文章。如果我在哪里,当您尝试查看所有研究的列表时,我收到了错误。我的错误在哪里?

undefined method `name' for nil:NilClass

ResearchesController

class ResearchesController < ApplicationController

    def new
  end

  def show
    @research = Research.find(params[:id])      
  end

    def index
        @researches = Research.all
    end

    def create
    @research = Research.new(research_params)

    @research.save
    redirect_to @research
  end

  private
    def research_params
    params.require(:research).permit(:name, :period_of_execution, :cost)
  end
end

index.html.erb

<h1>Listing of our researches</h1>

<table>
  <tr>
    <th>Name:</th>
    <th>Period of execution:</th>
    <th>Cost:</th>
  </tr>

  <% @researches.each do |research| %>
    <tr>
      <td><%= @research.name %></td>
      <td><%= @research.period_of_execution %></td>
      <td><%= @research.cost %></td>
    </tr>
  <% end %>
</table>

2 个答案:

答案 0 :(得分:1)

你必须写:

<td><%= research.name %></td>
<td><%= research.period_of_execution %></td>
<td><%= research.cost %></td>

因为您当前正在引用此处声明的变量:

<% @researches.each do |research| %>

答案 1 :(得分:0)

在您看来,您需要参考&#39; research&#39;而不是&#39; @ research&#39;。

这是一件小事。