【问题标题】:Active record is not display table活动记录不显示表
【发布时间】:2019-05-20 09:42:48
【问题描述】:

正如我在 Active Record 上工作一样,我为 Active Reocrd 开发了不同的功能,例如 Avg、sum 和 count,因为它显示工作正常,而且 Chart,

但有一件事让我感到困惑,我仍然无法让它工作,它应该可以正常工作,因为我无法像显示所有数据列表一样

 <table id="dttb" class="table table-hover">
     <thead>
         <tr>
             <th> full name </th>
         </tr>
     </thead>
     <tbody>
            <tbody>
              <% @user.each do |user| %>
                <tr>
                  <td><%= user.fullname %></td>
                </tr>
              <% end %>
            </tbody>
     </tbody>
 </table>

因为错误一直显示它应该可以工作

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

当我查找信息时,其中大多数都提到了。每个都做,似乎我做错了,因为我已经使用了

<%= User.count(:user) %>

<%= column_chart User.group(:provider).count(:user) %>

它似乎可以作为查询功能正常工作。

所以我再次尝试使用 find_each

 <% User.find_each do |user| %>
      <tr>
        <td><%= puts user.fullname %></td>
      </tr>
    <% end %>

并且错误消失了,但它不会显示在数据中,除非我输入“link_to”,否则它会显示空白,但它们会像

一样保持显示

我已经安装了 AdminController.rb

class AdminController < ApplicationController
  before_action :authenticate_user!

  def index
  @user = User.all 
  @tools = Tool.all 
  end
end

似乎我错过了一些东西,我看过谷歌或 stackover 流程​​,他们中的大多数答案与我写的这段代码非常相似

更新:因为我能够获取一些数据,例如电话号码或电子邮件

这是我写的代码

 <% User.find_each do |user| %>
 <tr>
     <td><%= link_to user.id, user  %></td>
     <td><%= link_to user.email, user %></td>
     <td><%= link_to user.created_at.strftime('%v'), user %></td>
     <td><%= link_to user.fullname, user  %></td>
     <td><%= link_to user.phone_number, user %></td>
 </tr>
 <% end %>

但对全名感到沮丧,因为它应该显示但它没有

【问题讨论】:

  • 请在最后一个 sn-p 中将 &lt;% User.find_each do |user| %&gt; 更改为 &lt;% @user.each do |user| %&gt;。还能用吗?
  • 是的,很遗憾,如果我将 'each' 更改为 'find_each' 并且它可以工作,它会显示“nil:NilClass 的未定义方法 `each'”,因此它无法正常工作
  • 你没有在你的控制器中设置@user,这就是为什么它说没有方法为零。视图文件的名称是什么?
  • 视图文件的名称是管理页面下的 _data.html.erb,因为在 localhost:3000/admin 上的 render 下使用此数据,@user 正在工作在除此数据之外的所有页面中
  • 发现这个问题,这是另一个代码块,我修复了它,它显示正确,

标签: ruby-on-rails activerecord ruby-on-rails-5


【解决方案1】:

在控制器中设置@user(或更好的@users):

def index # or the actual action name
  @users = User.all # or User.order(:fullname)
end

【讨论】:

  • 嗨,抱歉没能快点回来,是的,我已经有它了,因为忘记提到它了,如果我把 link_to 放到 user/17 上,它仍然根本不显示
  • 看来@user 包含一个用户,那么。不是集合,这是each 所必需的。请更新您发布控制器操作的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-12-28
  • 2019-05-11
  • 2017-02-14
  • 2011-04-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多