没有路由匹配文件的错误

时间:2010-05-20 09:02:58

标签: ruby-on-rails ruby

渲染后我没有路由匹配错误:部分

<% unless @user.uploads.empty? %>
 <% @user.uploads.each do |u| %>
 <tr>
 <td><%= link_to u.filename, u.filename %></td>

它为我提供了正确的文件名,如http://localhost:3000/DSC00082.JPG。 我没有在我的路线上添加任何东西。 对于新手来说,请原谅我的(希望)简单的问题。

添加一个问题:相应的数据库条目是否只是文件名?

将上述代码更改为

<% unless @user.uploads.empty? %>
 <% @user.uploads.each do |uploads| %>
 <tr>
 <td><%= link_to (uploads.filename, uploads) %></td>

并添加map.rescources:upload, 生成了“无操作响应显示”消息。在地址栏中,我的浏览器显示相关数据集的ID。

问候, devyn

1 个答案:

答案 0 :(得分:0)

如果uActiveRecord::Base的子类,则您的link_to必须如下:

<%= link_to u.filename, u %>

相同的Rails会检测到u是一个带控制器的对象,它会将其转换为REST有效的URL(并将您重定向到show动作)。

如果这不是您的情况,请告诉我。

[编辑]

如果你知道Rails是如何工作的,请跳过这一段:

使用map.resources:upload你告诉你有一个名为Upload的资源有一个UploadController,并为5个动作生成路由:new/create, index, show, edit/updatedestroy。每个操作都需要控制器中的方法(请参阅Rails Guides中的ClientsController示例)。

当你没有UploadsController#show时,

“没有对节目做出回应”。这种方法的一个例子:

def show
  @upload = Upload.find(params[:id])
  respond_to do |format|
    format.html
    format.xml {render :xml => @upload}
  end
end

此方法呈现文件views / uploads / show(确保创建它)。