首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails:文件rout不正确(没有路由匹配[GET]“/lot/log/文件夹/log.log”)

Rails:文件rout不正确(没有路由匹配[GET]“/lot/log/文件夹/log.log”)
EN

Stack Overflow用户
提问于 2013-09-17 21:18:23
回答 1查看 207关注 0票数 1

所以,我还在努力掌握罗尔的诀窍。我的参与程度很低。致力于修复和扩展以前创建的应用程序。因此,我在知识上有一些空白,我认为这也妨碍了我从必要的词汇和技术上识别信息,以搜索google/堆栈/etc,以找到合适的答案。所以请在这里容忍我。

我的问题很简单。我目前正在迭代文件列表,并使用链接填充无序列表以下载所述文件(确切地说,是.log文件)。所有内容都显示正确,但是链接本身是不正确的。因此,问题是,如果我单击log1.log链接,它就会带我到http://blahblah.blah/lot/log/folder/log1.log,这给我带来了Rails: File rout not correct (No route matches [GET] "/lot/log/folder/log1.log")错误。所以我想,“让我们确保正确的链接带我到我需要去的地方”,我把浏览器中的url改为http://blahblah.blah/log/folder/log1.log。当然,这不起作用,either...there肯定是我不理解Rails如何与目录结构一起工作的东西。

因此,我没有得到适当的route...this必须是简单的,我正在失去睡眠,我的家庭生活正在崩溃(实际上只有几个小时)。,我怎样才能解决这个问题?

以下是供参考的代码:

代码语言:javascript
复制
<h1>User Log</h1>

<div class="modal">
<!-- _results.html.erb loads here -->
</div>
<div class="form-container">
  <div class="wrapper">
    <% Dir["log/*/*.log"].each do |file| %>
    <li><%= link_to file, file %></li>
    <% end %>
 </div>
</div>

这些文件位于按月份指定的文件夹中,这些文件夹存放在log文件夹中。

例如app/log/ so 2013/log1.log。

总之--,我做错了什么,我对路线有什么不了解?我有什么解决方案,以及访问和显示目录和文件的常见做法是什么?

全速

根据请求编辑,routes.rb

代码语言:javascript
复制
App::Application.routes.draw do  

resources :alerts

# Users
devise_for :users, :path_prefix => 'auth', :controllers => { :passwords =>     'users/passwords', :sessions => 'users/sessions' }
devise_scope :user do
get '/login' => 'users/sessions#new'
end
match '/users/me' => 'users#me'
resources :users

# Facilities
resources :facilities

# Lab Methods
resources :lab_methods

# Products
resources :products

# Qualities / Quality Control
match 'quality-assurance/modal' => 'quality#modal'
resources :qualities, :path => 'quality-assurance', :controller => 'quality'

# Quality History
resources :quality_histories, :path => 'quality-history', :controller => 'quality_histories'

# Lots
match 'lot/certificate_review' => 'lot#certificate_review'
match 'lot/:action', :controller => 'lot'
match 'lot/:action/:id', :controller => 'lot'

# Other
match 'dashboard' => 'main#dashboard'
match 'reporting' => 'main#reporting'
match 'settings' => 'main#settings'
match 'search' => 'main#search'
match 'search.xlsx' => 'main#search.xlsx'
match 'options' => 'main#options'

# Root
root :to => 'main#dashboard'

get "lot/user_log" 

end
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-17 23:02:55

您只能直接访问“公用”文件夹中的文件。不过,以下是您可以做的:

  1. 创建一个具有获取日志的操作的新控制器。
  2. 将路由添加到此新操作
  3. 指向这条路线的链接

控制器操作可能如下所示:

代码语言:javascript
复制
class LogsController < ApplicationController
  def log
    send_file "log/#{params[:log_file]}"
  end
end

路线:

代码语言:javascript
复制
get "/log/:log_file", :to => 'logs#log', :constraints => {:log_file => /.*/}

注意约束选项,它允许log_file参数包含斜杠。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18860072

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档