为啥我的列表在应用程序中显示为空,如果其中包含信息?

Posted

技术标签:

【中文标题】为啥我的列表在应用程序中显示为空,如果其中包含信息?【英文标题】:Why my list shows as an empty in app, if it's contain information in it?为什么我的列表在应用程序中显示为空,如果其中包含信息? 【发布时间】:2019-08-20 15:28:37 【问题描述】:

无法在我的应用中显示列表。 应用程序接受类似数组的空,但我有关于它的信息,我需要显示它。你能检查 Ruby 的人吗

控制器

class GymListsController < ApplicationController

  def index
    @gym_lists = GymList.all
  end

end

型号(此列表应该可用,但它不可用)

class GymList < ApplicationRecord

  has_many :users, through: :schedules

  def gym_names
      ["Blink Fitness",
      "24 Hour Fitness",
      "Peloton Studio",
      "Simply Fit",
      "Equinox",
      "Harbor Fitness"]
  end

  def gym_locations
      ["1172 5th Ave, ***lyn",
      "1556 96 Ave, ***lyn",
      "356 Lockey St, New York",
      "421 Hudson St, New York",
      "111 Cortney St, New York",
      "37-20 Astoria Blvd, Queens"]
  end

end

查看

<h2>Yours GYM</h2>
<br>
<div>
<% @gym_lists.each do |gym|%>
  <h2><%= gym.name %></h2>
  <h2><%= gym.location %></h2>
  <br>
  <% end %>
</div>

它显示一个空白页面。

红宝石

【问题讨论】:

在您显示的代码中没有任何地方创建GymList。您在哪里创建 GymList 记录?如果您认为您正在尝试访问由gym_names 和/或gym_locations 返回的值,那么您就大错特错了。 【参考方案1】:

@gym_lists = GymList.all从数据库中获取所有GymList记录

你应该使用类似的东西 控制器
    class GymListsController < ApplicationController

      def index
        @gym_list = GymList.new
        @gym_lists_name = gym_list.gym_names
        @gym_locations = gym_list.gym_locations  
      end
    end

并在视图中遍历这两个列表并打印它 第二种解决方案

将这些列表添加到数据库中,然后您就可以使用@gym_lists = GymList.all

【讨论】:

我觉得这个教程对你很有帮助guides.rubyonrails.org/active_record_basics.html【参考方案2】:

好的,您的代码中有很多问题。您可能应该阅读一些关于 CRUD this medium post should be a good start 的文档。

但是..关于您提供的信息,我想帮助您。

删除 GymList 模型中的方法并将其替换为:
NAMES = ["Blink Fitness", "24 Hour Fitness", "Peloton Studio", "Simply Fit", "Equinox", "Harbor Fitness"]
LOCATIONS = ["1172 5th Ave, ***lyn", "1556 96 Ave, ***lyn", "356 Lockey St, New York", "421 Hudson St, New York", "111 Cortney St, New York", "37-20 Astoria Blvd, Queens"]
更新您的控制器:
def index
  @gym_lists = GymList::NAMES.zip(GymList::LOCATIONS)
end

zip 将创建一个这样的数组数组:[["Blink Fitness", "1172 5th Ave, ***lyn"], ["24 Hour Fitness", "1556 96 Ave, ***lyn"], ...] doc here

并使用以下代码更新您的视图:

在 Aleksei Matiushkin 发表评论后编辑答案

<% @gym_lists.each do |name, location|%>
  <h2><%= name %></h2>
  <h2><%= location %></h2>
  <br>
<% end %>

但说真的,考虑创建一个具有namelocation 属性的模型GymClub,并通过seed.rb 填充您的db

【讨论】:

以上是关于为啥我的列表在应用程序中显示为空,如果其中包含信息?的主要内容,如果未能解决你的问题,请参考以下文章

如果值在 Android 中为空或 null,则显示默认文本

为啥SAP Logon720打开后,连接的列表显示为空,且登陆显示为灰色???安装步骤没问题,且三个配置文件sa

为啥在我的 HttpPost 方法 Ajax 调用中,控制器上的参数为空?

为啥 Firebase 实时数据库的数据在控制台中显示为空?

为啥 Heroku 说主键为空? [复制]

onClick() 事件适用于一个 div,但不适用于另一个。为啥?