【问题标题】:Rails Linking Files from DirectoryRails 从目录链接文件
【发布时间】:2012-05-28 11:24:47
【问题描述】:

RUBY -v 1.8.7,Rails -v 2.3.8

我正在尝试将文件从公共/数据链接到视图,这让我很头疼。我知道我自己应该能够做到这一点,但我丢失了我的旧 Rails 书并从亚马逊订购了一本新书,它应该会在一周内到达.... :*(

我确实阅读了上传文件教程。

我的问题: 我有大约 3000 个文件夹;每个文件夹大约有 3~5 个文件。

我的问题:

  • 我是否应该创建一个数据库迁移只是为了跟踪文件的地址?以便可以轻松访问? (即 order.data_file.address;我猜“是”)

  • 上传文件后,如何链接文件,以便正确链接文件以供视图使用。

所以无论如何我都记下来了:

<% @files = Dir.glob("public/data/*") %>
<% for m in @files %>
<% new_file = m.to_s %>
<li><%= link_to m.to_s, new_file %> </li>
<% end %>

文件的链接最终为:localhost:3000/public/data/temp.pdf

但这不起作用并返回:

 No route matches "/public/data/temp.pdf" with {:method=>:get}

我猜我需要在 routes.rb 中添加一些东西来使它工作......

 map.datafile '#{RAILRS_ROOT}/public/data/:id', :controller => 'upload'

感谢任何帮助或建议。

【问题讨论】:

  • path = params[:post] send_file(path, :type => 'application/pdf', :disposition => 'inline')

标签: ruby-on-rails ruby file upload


【解决方案1】:

不需要特殊的 map.resources 路线。没有特殊的控制器方法 send_to。

只需通过省略公共部分来更正链接即可。我在另一个问题中使用了以下代码。

    <% Dir["public/files/*.pdf"].each do |file| %>
    <li><%= link_to 'Letter', file[/\/.*/] %></li>
    <% end %>

【讨论】:

  • 返回一个新的字符串,其中给定的记录分隔符从 str 的末尾删除(如果存在)。如果 $/ 没有从默认的 Ruby 记录分隔符更改,则 chomp 也会删除回车符(也就是说,它将删除 \n、\r 和 \r\n)。
猜你喜欢
  • 1970-01-01
  • 2020-01-14
  • 2021-05-07
  • 1970-01-01
  • 2013-12-15
  • 1970-01-01
  • 2013-11-05
  • 2011-11-21
  • 2012-08-27
相关资源
最近更新 更多