2010-05-20 161 views
0

匹配錯誤我有一個沒有路由匹配後錯誤渲染:部分沒有路由的文件

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

它給了我正確的文件名一樣http://localhost:3000/DSC00082.JPG。 我還沒有添加任何東西到我的路線。 對於新的rails,請原諒我(希望)簡單的問題。

添加一個問題:對應的數據庫條目是正確的只是文件名?

上面的代碼變更爲

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

和添加map.rescources後:上傳, 「否動作響應表明」被生成的消息。在地址欄中,我的瀏覽器顯示關於數據集的ID。

問候, devyn

+0

什麼是你的渲染:部分代碼? – Salil 2010-05-20 09:16:51

+0

渲染部分代碼在索引中;上面的代碼來自_datafiles <%= render:partial =>'upload/datafiles'%> – 2010-05-20 09:18:00

回答

0

如果uActiveRecord::Base一個子類,你的link_to必須是這樣的:

<%= link_to u.filename, u %> 

同樣的Rails會檢測u與控制器的對象,而且它會將其轉換爲REST有效URL(並將您重定向到show動作)。

如果這不是你的情況,請告訴我。

[編輯]

如果你知道的Rails是如何工作的,跳過這一段:

隨着map.resources:上傳你告訴你有一個叫做上傳資源具有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(確保創建它)。

+0

不幸的是,這會拋出一個「undefined method'upload_path'」消息;甚至在將「u」全部更改爲「上傳」之後。 – 2010-05-20 11:51:52

+0

你的config/routes.rb有「map.resources:uploads」這行(沒有引號)? – pablorc 2010-05-20 12:17:08

+0

請參閱上面編輯過的帖子。它必須rescources:我的控制器的上傳被命名爲 – 2010-05-20 12:24:39