0

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

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

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

但是事情似乎不适用于 Rails 语言。我已经阅读了一些有类似问题的代码,但我不太确定在哪里写它们。我的意思是,在哪些文件/目录中?因为在 C 中我们没有多个文件和文件夹之类的东西(我们只写一个单页程序)。我有点迷路了。

如果有人可以提供一些一般步骤的帮助,例如在哪里/为什么/写什么,我将非常感激!没有必要完全具体,只是一些整体的想法会很棒

4

1 回答 1

0

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

接下来要做的是将它变成内存中的 ActiveRecord 对象。假设 json 对象仅包含对相关模型有效的键/值对,您可以像这样简单地执行此操作:

ar_object = MyModel.new(json_object.to_hash)

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

ar_object.save

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

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)。

于 2020-11-19T10:10:07.090 回答