【问题标题】:NoMethodError in StaticPages#home when attempting to list database query尝试列出数据库查询时,StaticPages#home 中的 NoMethodError
【发布时间】:2015-07-08 23:33:42
【问题描述】:

Ruby noob 在这里,我创建了一个搜索表单,我正在尝试查询一个数据库并显示结果。我在 StaticPages#home 中收到 NoMethodError 随着.... /home/action/Projects/CodonCoderTest5/app/views/static_pages/home.html.erb 其中第 4 行提出:

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

我哪里错了?

布局/静态页面/主页

<h1>StaticPages#home</h1>
<% @data_bases.each do |list| %>
     <div class="list">
         <h1 class="list-mrnaCodon"><%= link_to list.mrnaCodon %></h1>
     </div>
<% end %>

控制器

class DataBaseController < ApplicationController

  def new
  end

  def index
     if params[:search]
         @data_bases = Match.search(params[:search]).order("created_at DESC")
     else
         @data_bases = Match.order("created_at DESC")
     end
  end
end

【问题讨论】:

  • 发布准确的错误跟踪总是比自己解析更好。
  • @shivam 你到底是什么意思?

标签: html ruby-on-rails ruby sqlite


【解决方案1】:

该错误意味着您认为@data_bases 的评估结果为nil。这是有道理的,因为StaticPages#home 的视图可以访问该变量的唯一方法是在相应的控制器操作中设置它(即StaticPagesController 上的home 方法)。看起来您只是在 DataBaseController 上设置该变量。

class StaticPagesController < ApplicationController

  ...

  def home
    if params[:search]
      @data_bases = Match.search(params[:search]).order("created_at DESC")
    else
      @data_bases = Match.order("created_at DESC")
    end
  end

  ...

end

【讨论】:

  • 我只在StaticPagesController中定义了各个页面,除了它是空的。你介意展示一段关于你的意思的代码吗?谢谢
  • 编辑了响应以进行说明。如果没有在StaticPagesController 上的home 操作中初始化该变量,static_pages/home 的视图就无法知道它。 (我敢打赌,您当前的代码在 data_base/index 视图上可以正常工作)
  • 实现了您发布的代码,不幸的是它仍然无法正常工作。但是,它会返回此错误“StaticPagesController#home 中的 NameError”。感谢您的帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多