如何使用 rails 中的 JSON 文件填充数据库

How to populate a DB using and JSON file in rails

所以,在提问之前,我必须说我对网络编程完全陌生。我两天前开始学习,我唯一的编程经验是C语言。我正在尝试通过一些练习在 rails 上学习 ruby。这意味着我对语法几乎一无所知,但我正在一点一点地了解它。

因此,当前的练习是:获取从网站 API 获得的 JSON 文件,并将其数据存储在模型中,然后我必须将其显示在 table.

因为我有 C 经验,所以我将这个问题理解为 1. 创建一个新结构,2. 为此结构创建一个向量,3. 从文件中读取数据并将其存储在该向量中,4.printing数据。所有这些都是通过在单个 .c 文件中编写代码行然后 运行 在我的终端中完成的。

但是 rails 语言似乎无法以这种方式工作。我读过一些有类似问题的代码,但我不太确定将它们写在哪里。我的意思是,在 files/directories 中?因为在C中我们没有多文件多文件夹这样的东西(我们只是写一个一页的程序)。我有点迷路了。

如果有人能帮忙把一些通用的步骤,写成where/why/what,我将不胜感激!没有必要完全具体只是一些整体的想法就太棒了

假设您获得了一个 JSON 文件,其中包含一个 JSON object 并且您已将其从文件中读取到内存中。您的问题没有阐明这是否已经成为一个问题,因此我假设您可以进行此转换(文件中的字符串到活动对象)。如果没有,看看这个:Serialize Ruby object to JSON and back?

接下来要做的是将它变成内存中的ActiveRecord 对象。假设 json 对象仅包含对所讨论模型有效的 key/value 对,您可以像这样简单地做到这一点:

ar_object = MyModel.new(json_object.to_hash)

然后,将其保存到数据库(这需要一个与您的 AR 模型相对应的数据库 table,并且对于您的 json 对象中的每个键都有一个正确的列:

ar_object.save

然后,当浏览器调用AR模型的索引页面时,例如http://localhost:3000/my_models.html,使用控制器的索引方法从数据库中获取模型的所有实例:

class MyModelsController < ApplicationController

   def index
     @objects = MyModell.all
     # rails will render /app/views/my_models/index.html.erb by default
   end

end

然后在app/views/my_models/index.html.erb:

<table>
   <thead>
     <tr>
       <th>Col 1 name</th>
       <th>Col 2 name</th>
     </tr>
   </thead>
   <tbody>
     <% for object in @objects do %>
       <tr>
         <td><%= object.col_1 %>
         <td><%= object.col_2 %>
       </tr>
     <% end %>
   </tbody>
 </table>

HTML 当然可能看起来不同,这取决于您的模型的属性和您喜欢的模板引擎(看看 haml)。