iT邦幫忙

DAY 14
9

Rails 的簡單任務系列 第 15

[RoR] 刪除功能及顯示方式的變化

把檔案大小及日期,用口語化來說是多少 KB, MB,而不是說多少 bytes;也不說幾年月日時分上傳,而以多久前上傳該檔;好像是 web2.0 趨勢的呈獻風格,RoR簡單的語法就可完成。
建立刪檔動作

  def rmfile
   @dlfile = Upfile.find_by_filetoken(params[:filetoken])
# 若沒該檔就中止動作,返回首頁
   if @dlfile.nil?
    flash[:notice] = "no such file"
    redirect_to :action => 'index'
    return
   end
# 若無上述中止動作則開始將刪檔及從資料庫中移掉該項目
     File.delete("/home/ironman/test1/FILES/#{@dlfile.filetoken}")
     @dlfile.destroy
     flash[:notice] = "#{@dlfile.filename} 已順利刪除!"
     redirect_to :action=> 'index'
  end

將刪除的連結加到 index 之中

<%= link_to '刪除', {:action=> 'rmfile', :filetoken => file.filetoken}, :confirm => "真的要刪?" -%>


這樣就可以有完整的上傳、下載、刪除的基本動作,而且檔名也不會有編碼不 match 或重覆的問題。

美化顯示格式
看到的結果會是如此

有關檔案的 table 列表部份是複製 CSS table Gallery 裡的 Golden style css 語法。
而將 filetype 的欄位拿掉,因該欄位是為了send_file時所用。而其中比較特別的是檔案大小是以KB,MB來顯示,上傳時間以多少小時或分鍾之前來顯示,刪除的動作的連結改用以垃圾桶的圖型來顯示,主要改變的語法如下:

<td><%= number_to_human_size(file.size) -%></td>
<td><%= distance_of_time_in_words_to_now(file.created_at, include_seconds = true) -%>之前</td>
<td><%= link_to image_tag("del.gif", :alt => '刪除', :border=>0), {:action=> 'rmfile', :filetoken => file.filetoken}, :confirm => "真的要刪?" -%></td>

是分別參考以下的語法即可做出來:
檔案大小語法:http://api.rubyonrails.org/classes/ActionView/Helpers/NumberHelper.html#M001669
日期語法:http://api.rubyonrails.org/classes/ActionView/Helpers/DateHelper.html#M001712
圖型語法:http://api.rubyonrails.org/classes/ActionView/Helpers/AssetTagHelper.html#M001686

將建置到目前為止的程式碼及css放在下列位置:
http://upload.singernew.org/dl/d14-index\_html\_erb.txt
http://upload.singernew.org/dl/d14-layouts\_upfile\_html\_erb.txt
http://upload.singernew.org/dl/d14-\_listitem\_html\_erb.txt
http://upload.singernew.org/dl/d14-upfile\_controller\_rb.txt
http://upload.singernew.org/dl/d14-upfile\_css.txt
而其中的 index.html.erb 內容中,將一些內容用
<%= render :partial => 'listitem' %>

此語法,寫到 _listitem.html.erb 之中,所以才會多此檔案。

後續的步驟將探討如何區分單位內外來的範圍,再建置可以根據範圍來區分上傳下載及密碼相關的機制。


上一篇
[RoR] 以資料庫為依據的上傳下載及列檔功能
下一篇
[RoR] HTTP 環境變數的考量
系列文
Rails 的簡單任務33

2 則留言

0
逮丸逮丸
iT邦大師 1 級 ‧ 2008-10-02 14:06:48

將這個已建置好的實際可運作的網站,簡稱單位用暫存系統,放置在:
http://alpha.tagbible.net/upfile
單位外可以上傳檔案,只有單位內可下載,
也可以設一下密碼,看看會出現怎樣的狀況;
有設密碼的,也可從單位外去刪該檔案。
測試時千萬不要放敏感性的資料測試喔…
當然也會看到一些裡面放出來可以下載的資料,
看看那個 sexy_layouts.zip 是什麼東西 sexy 喔…

0

感恩分享咯!

我要留言

立即登入留言