渲染后我没有路由匹配错误:部分
<% 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
答案 0 :(得分:0)
如果u
是ActiveRecord::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/update
和destroy
。每个操作都需要控制器中的方法(请参阅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(确保创建它)。