【问题标题】:Excel UI for Ruby on Rails DatabaseRuby on Rails 数据库的 Excel 用户界面
【发布时间】:2015-03-09 00:14:32
【问题描述】:

我希望允许用户通过 Excel 电子表格界面添加和编辑数据,并让数据库镜像这些电子表格,或每天自动更新。不允许用户编辑电子表格的结构,只需简单地添加或编辑现有行。有没有允许这种功能的 gem?

【问题讨论】:

  • 您的意思是您想让用户通过 Excel 实际访问数据库吗?或者在看起来像 Excel 电子表格的网页中?即只是一个原始表。
  • 我希望他们通过 excel 实际访问它(它可以是 csv 文件或任何其他可通过 excel 编辑的文件)。该文件将位于用户可以访问的服务器上的特定位置。这是一个内部使用的应用程序,所以我不担心安全性。
  • 嗯,Excel可以使用DB作为数据源,但不知道你是否真的可以使用Excel来编辑数据。我想你可能只能看到它。为什么不将整个表格显示为一个网页,其中每个单元格都是一个用当前值填充的表单字段。然后可以编辑值并点击保存按钮。
  • 什么是数据库格式?还是您的意思是您希望 Excel 文件成为数据存储?那么您实际上是在要求一个可以由多人同时查看和编辑的 Excel 电子表格。这是 Excel 并没有真正做的事情,并且有很好的理由。
  • excel 文件将是一个独立文件。我希望 MySQL 数据库镜像这个文件,或者通过读取文件每天更新​​。我正在与一家非常小的公司打交道,由于该公司的非技术知识,该公司特别要求能够通过 excel 添加和编辑数据。如果他们需要添加列或新表,他们会以管理员身份来找我。

标签: ruby-on-rails ruby database excel import


【解决方案1】:

我将 Excel 部分排除在外,因为我认为它甚至不可能,更不用说从长远来看实用了。

在 Rails 应用中创建表格。您可以使用由scaffold 命令创建的标准视图。

然后通过将 best_in_place gem 添加到您的 gem 文件来安装它

gem 'best_in_place'

在您的 application.js 文件中,在您的文件中的 jquery 之后添加 best_in_place 和 jquery.purr:

//= require jquery
//= require jquery.purr
//= require best_in_place

为您的桌子的控制器创建一个咖啡脚本文件(如果您搭建了它,那么已经有一个)。在我的示例中,我将其称为 my_tables:

my_tables.js.coffee:

jQuery ->
  $('.best_in_place').best_in_place()

设置就是这样,现在只需修改您的表以使用 best_in_place 类:

<h1>Listing my_tables</h1>

<table>
  <thead>
    <tr>
      <th>Col1</th>
      <th>Col2</th>
      <th>Col3</th>
      <th>Col4</th>
      <th>Col5</th>

    </tr>
  </thead>

  <tbody>
    <% @my_tables.each do |my_table| %>
      <tr>
        <td><%= best_in_place my_table, :col1 %></td>
        <td><%= best_in_place my_table, :col2 %></td>
        <td><%= best_in_place my_table, :col3 %></td>
        <td><%= best_in_place my_table, :col4 %></td>
        <td><%= best_in_place my_table, :col5 %></td>

      </tr>
    <% end %>
  </tbody>
</table>

<br>

<%= link_to 'New My table', new_my_table_path %> 

唯一的区别在于各个单元格。代替标准:

<td><%= my_table.col1 %></td>

我们使用 best_in_place 方法并将对象和列名的符号而不是点方法传递给它:

<td><%= best_in_place my_table, :col1 %></td>

现在,如果您刷新视图,您将看到与往常一样的同一张表。但是单击任何单元格,它就会变为可编辑的。更改值并按 ENTER。新值保持不变。重新加载页面,您会看到它仍然具有您赋予它的新值。

【讨论】:

  • 我希望你试试这个。我在 Rails 中使用它制作了一个快速应用程序。花了大约10分钟。这将避免任何类型的导入/更新。更改会立即反映在数据库中。如果您想像在 Excel 中那样复制和粘贴大量单元格,那么这对您不起作用。
猜你喜欢
  • 2012-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-02
  • 2016-04-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多