【问题标题】:undefined method `each' for nil:NilClass schneems reddit examplenil 的未定义方法“each”:NilClass schneems reddit 示例
【发布时间】:2014-01-02 14:25:30
【问题描述】:

我认为将@links=Link.all 添加到我的控制器可以解决这个问题。 通过查看Link.count=6,我确实确保我的链接数据库中有有效条目

我收到以下错误:

页面中的 NoMethodError#index
显示 /Projects/reddit_on_rails/app/views/pages/index.html.erb 其中第 6 行提出:

nil:NilClass 的未定义方法 `each'

<ul>
<% @links.each do |link| %>
<li>link.url</li>
<li>link.title</li>
<% end %>

我的控制器:

class LinksController < ApplicationController
  #Added @links =Link.all  did not solve the problem

  def index
    @links = Link.all
  end

  def show
  end

  def new
    @link = Link.new
    respond_to do |format|
      format.html # new.html.erb
      format.json { render json: @link }
    end
  end

  def create
    @link = Link.new(link_params)

    if @link.save
      #render "new"
      redirect_to "/"
    else
      # This line overrides the default rendering behavior, which
      # would have been to render the "create" view.
      render "new"
    end
  end

 private

   def link_params
     params.require(:link).permit(:title,:url)
   end 
end

【问题讨论】:

  • 喜欢你讲故事的方式
  • 您正在访问哪个操作来创建此错误?

标签: ruby-on-rails


【解决方案1】:

根据您的描述,您收到以下错误消息

NoMethodError in Pages#index
Showing /Projects/reddit_on_rails/app/views/pages/index.html.erb where line #6 raised:

根据错误消息,您在index 方法内的Pages 控制器中存在问题。所以你需要解决Pages控制器内部的问题,而不是Links控制器内部的问题。

您的Pages 控制器中有名为index 的方法吗?

【讨论】:

  • 这很容易。我浪费了很多时间玩 links_controller 谢谢
【解决方案2】:

@linksnil,因为您没有在控制器中的任何位置设置它,例如 @links = Link.all

您不能在nil 上致电each

【讨论】:

  • 这样可以解决问题,但添加 @links=Link.all 并没有帮助
【解决方案3】:

你是什么观点?假设 index.html.erb。

在你的控制器中,尝试添加

def index
  @link = Link.all
end

如果这不起作用,请验证您是否有任何链接。在终端而不是输入rails server 输入

rails console
Link.all

如果返回为 [],那么您的数据库中没有任何内容。

【讨论】:

  • 谢谢,我认为这是我的第一个问题,我将@link 添加到我的控制器,但似乎并没有解决它。我的数据库中有几个有效条目(Link.count = 6)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多