1.下載
fckeditor_plugin-0.3.2.zip,目前版本為0.3.2
2.解壓到vendor\plugins目錄下,并且重新命名為fckeditor
3.到該應用程序根目錄下,然后運行rake fckeditor:install,則執行自動安裝
4.在自己的view層中添加
<%= javascript_include_tag :fckeditor %>
以及在你需要編輯的字段textarea替換為
<%= fckeditor_textarea("book", "desc", { :toolbarKit => 'Simple', :width => '100%', :height => '200px' }) %>
第一個參數為你的domain對象,desc為你的編輯字段值,其他顧名思義
然后運行你的頁面程序,發現simple upload有點bug,上傳后javascript報錯
5.追蹤代碼發現
vendor\plugins\fckeditor\app\controllers\fckeditor_controller.rb下的
??def?upload
????self.upload_file
??end調用了upload_file方法
def?upload_file
????@new_file?=?params[:NewFile]
????@url?=?upload_directory_path
????begin
??????ftype?=?@new_file.content_type.strip
??????if?!?MIME_TYPES.include?(ftype)
????????@errorNumber?=?202
????????puts?"#{ftype}?is?invalid?MIME?type"
????????raise?"#{ftype}?is?invalid?MIME?type"
??????else
????????path?=?current_directory_path?+?"/"?+?@new_file.original_filename
????????File.open(path,"wb",0664)?do?|fp|
??????????FileUtils.copy_stream(@new_file,?fp)
????????end
????????@errorNumber?=?0
??????end
????rescue?=>?e
??????@errorNumber?=?110?if?@errorNumber.nil?
????end
????
????#?Fix?provided?by?Nicola?Piccinini?--?http://superfluo.org
????render?:text?=>?%Q'<script>window.parent.frames[\'frmUpload\'].OnUploadCompleted(#{@errorNumber});</script>'

????#render?:inline?=>?'page?<<?"window.parent.frames[\'frmUpload\'].OnUploadCompleted(#{@errorNumber},?\'#
{@new_file}\');"',?:type?=>?:rjs
??end中的
render?:text?=>?%Q'<script>window.parent.frames[\'frmUpload\'].OnUploadCompleted(#{@errorNumber});</script>'在瀏覽服務器時是正常的,但是在快速上傳中不應該返回這個script語句
則修改upload方法
def?upload
????@new_file?=?params[:NewFile]
????@url?=?upload_directory_path
????begin
??????ftype?=?@new_file.content_type.strip
??????if?!?MIME_TYPES.include?(ftype)
????????@errorNumber?=?202
????????puts?"#{ftype}?is?invalid?MIME?type"
????????raise?"#{ftype}?is?invalid?MIME?type"
??????else
????????path?=?current_directory_path?+?"/"?+?@new_file.original_filename
????????File.open(path,"wb",0664)?do?|fp|
??????????FileUtils.copy_stream(@new_file,?fp)
????????end
????????@errorNumber?=?0
??????end
????rescue?=>?e
??????@errorNumber?=?110?if?@errorNumber.nil?
????end
????
????#?Fix?provided?by?Nicola?Piccinini?--?http://superfluo.org
????render?:text?=>?%Q'<script>window.parent.OnUploadCompleted(#{@errorNumber},\"#{UPLOADED}/#{params[:Type]}\",\"#{@new_file.original_filename}\",\"\");</script>'
??end快速上傳問題修復
6.發現文件夾里邊如果上傳圖片過多不好備份,故采用/年/月方式保存
修改代碼如下:
???def?upload
????@new_file?=?params[:NewFile]
????@url?=?upload_directory_path
????begin
??????ftype?=?@new_file.content_type.strip
??????if?!?MIME_TYPES.include?(ftype)
????????@errorNumber?=?202
????????puts?"#{ftype}?is?invalid?MIME?type"
????????raise?"#{ftype}?is?invalid?MIME?type"
??????else
????????path?=?date_directory_path?+?"/"?+?@new_file.original_filename
????????File.open(path,"wb",0664)?do?|fp|
??????????FileUtils.copy_stream(@new_file,?fp)
????????end
????????@errorNumber?=?0
??????end
????rescue?=>?e
??????@errorNumber?=?110?if?@errorNumber.nil?
????end
????
????#?Fix?provided?by?Nicola?Piccinini?--?http://superfluo.org
????render?:text?=>?%Q'<script>window.parent.OnUploadCompleted(#{@errorNumber},\"#{UPLOADED}/#{params[:Type]}/#{Time.now.year}/#{Time.now.month}/#{@new_file.original_filename}\",\"#{@new_file.original_filename}\",\"\");</script>'
??end?
??private
??def?date_directory_path
????base_dir?=?"#{UPLOADED_ROOT}/#{params[:Type]}/#{Time.now.year}/#{Time.now.month}"
????#Dir.mkdir(base_dir,0775)?unless?File.exists?(base_dir)
????FileUtils.mkdir_p?base_dir
????"#{base_dir}"
??end

7.同理可以對其上傳文件名稱進行隨機處理以防重名,就不多說了。
做此筆記,拋磚引玉。
發現rails的plugin機制挺不錯的,比較靈活,不過網上介紹plugin的文章真的不是很多
posted on 2006-11-04 01:29
老妖 閱讀(4372)
評論(11) 編輯 收藏 所屬分類:
rails