如何使用 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)。
所以,在提问之前,我必须说我对网络编程完全陌生。我两天前开始学习,我唯一的编程经验是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)。