[RoR] 小小複雜模仿 del.icio.us 的個人化的社會標籤 per user tagging (續)
接續 上一篇 [RoR] 小小複雜模仿 del.icio.us 的個人化的社會標籤 per user tagging 來分享 使用者增減標籤界面的簡單做法。
分享內容(
才不會讓全世界的人都作這些動作,而像 new, create, destroy 這三個項目,就將其 action 拿掉,或者變成只秀出禁止動作的字樣。
只讓已登入的使用者才可看到 編輯標籤 的連結:

在 app/views/bibles/edit.html.erb 主要把該經文中已有該 user 曾加入的 標籤 取出來放到 form 裡供增減

而更新部份的 action,只要去更新 標籤 的欄位,其他部份不去更新即可。
社會標籤的應用
透過以上的介紹,Social Tagging 的基本機制便可實作出來,運作的範例 demo 在: http://alpha.tagbible.net/bibles 。目前在網路上看到的標籤,許多只是 該文章的作者,為自己的文章下標籤,只算是個人標籤,只對自己較有意義,但別人不能去加,最多是透過 del.icio.us 之類的第三方書籤網站,來對該文去定義自己覺得可以代表的標籤。
透過本文的作法,等於是可以讓自己的網站與 del.icio.us 有同樣的功能,讓使用者在自己站註冊,去對自己網站所提供的資料來下標籤,本文的例子是用聖經經文,就可以把對自己對某節經文可以有什麼屬性來作書籤,在這樣彼此相連結的作法下,就更容易把一個概念,串連出一堆自己原來沒有注意到的經文出來。
同樣地,所要標籤的對象,可以把 聖經經文,置換成像:
新聞、雜誌內容:通常只有透過基本類別、全文檢索的方式,且又排序到很後面,才能指到古早文章,若有不同人去標籤,就更能提高使用率。
圖書館的書目資料:透過各讀者對書所下的標籤,可把相關的讀者及其所關注的標籤議題,及相關的書關連起來。
書店的書目資料:同上。
電影資料:通常網路上看到的電影資料庫,都只有單純的單一分類,若可讓使用者加標籤,就可從不同的相關字眼,都指到同一步電影名稱。
…
基本上,只要是會累積成大量的資料,若能加上 Social Tagging 的機制,能補上全文檢索的不足,而可以透過使用者的 定義、意義、標籤、關鍵字、代表字眼 不同詮釋來連結到該資料。而更有趣的是,也可以透過 標籤 來做到像 http://www.blogger.com/profile/4 興趣、喜好…給串起來。
在這個 Web 2.0 的環境中,只能說 RoR 是一個使 Web 2.0 的功能可以垂手可得的方便工具,比起其他的程式環境是相當簡單地達成任務。
9人
使用者增減標籤的界面
在 app/controllers/bibles_controller.rb 加入
include AuthenticatedSystem before_filter :login_required, :only => [ :new, :create, :edit, :update, :destroy ]
才不會讓全世界的人都作這些動作,而像 new, create, destroy 這三個項目,就將其 action 拿掉,或者變成只秀出禁止動作的字樣。
只讓已登入的使用者才可看到 編輯標籤 的連結:
# 在 app/views/bibles/show.html.erb 適當位置加入: <% if is_logged_in? %> <%= link_to '編輯標籤', edit_bible_path(@bible) %> <% end %>

在 app/views/bibles/edit.html.erb 主要把該經文中已有該 user 曾加入的 標籤 取出來放到 form 裡供增減
<h1>編輯標籤</h1>
<%= error_messages_for :bible %>
<% form_for(@bible) do |f| %>
<p>
<%= @bible.chinesef -%><%= @bible.chap -%>:<%= @bible.sec -%><br />
<%= @bible.txt %>
</p>
<p>
標籤:
<% darray = []
Tag.userid_itemid(current_user.id, @bible.id,'Bible').each do |t| darray.push(t.name)
end %>
<%= text_field_tag 'tag', darray.join(' ') %>
</p>
<p>
<%= f.submit "更新標籤", :name => nil -%>
</p>
<% end %>
<%= link_to '回本節經文', @bible %> |
<%= link_to '回聖經首頁', bibles_path %>

而更新部份的 action,只要去更新 標籤 的欄位,其他部份不去更新即可。
def update
@bible = Bible.find(params[:id])
respond_to do |format|
#只要改成這一行:
if @bible.tag(params[:tag].split(' ').join(','),current_user.id)
flash[:notice] = '已更新標籤'
format.html { redirect_to(@bible) }
...
社會標籤的應用
透過以上的介紹,Social Tagging 的基本機制便可實作出來,運作的範例 demo 在: http://alpha.tagbible.net/bibles 。目前在網路上看到的標籤,許多只是 該文章的作者,為自己的文章下標籤,只算是個人標籤,只對自己較有意義,但別人不能去加,最多是透過 del.icio.us 之類的第三方書籤網站,來對該文去定義自己覺得可以代表的標籤。
透過本文的作法,等於是可以讓自己的網站與 del.icio.us 有同樣的功能,讓使用者在自己站註冊,去對自己網站所提供的資料來下標籤,本文的例子是用聖經經文,就可以把對自己對某節經文可以有什麼屬性來作書籤,在這樣彼此相連結的作法下,就更容易把一個概念,串連出一堆自己原來沒有注意到的經文出來。
同樣地,所要標籤的對象,可以把 聖經經文,置換成像:
新聞、雜誌內容:通常只有透過基本類別、全文檢索的方式,且又排序到很後面,才能指到古早文章,若有不同人去標籤,就更能提高使用率。
圖書館的書目資料:透過各讀者對書所下的標籤,可把相關的讀者及其所關注的標籤議題,及相關的書關連起來。
書店的書目資料:同上。
電影資料:通常網路上看到的電影資料庫,都只有單純的單一分類,若可讓使用者加標籤,就可從不同的相關字眼,都指到同一步電影名稱。
…
基本上,只要是會累積成大量的資料,若能加上 Social Tagging 的機制,能補上全文檢索的不足,而可以透過使用者的 定義、意義、標籤、關鍵字、代表字眼 不同詮釋來連結到該資料。而更有趣的是,也可以透過 標籤 來做到像 http://www.blogger.com/profile/4 興趣、喜好…給串起來。
在這個 Web 2.0 的環境中,只能說 RoR 是一個使 Web 2.0 的功能可以垂手可得的方便工具,比起其他的程式環境是相當簡單地達成任務。
參考資料:http://ianli.com/site/HowTo/RailsStarter-BeTaggable
▼ ADVERTISEMENT ▼
-
‧
-
‧
-
‧
相關問答
- 鐵人賽的疑問?
- 最後一天 -- 鐵人賽對我的意義!!!
- 收到鐵人賽的T-shirt啦~~(有圖有真相)
- 小財神來報告一下鐵人賽豐富的獎品與參賽報法囉
- 收到鐵人賽的T-shirt啦~~ (有圖有真相)
- [RoR]為何Linux -> Perl -> Ruby on Rails?
- [RoR] 小小複雜建置 Social Tagging 社會標籤功能
- 第一屆iT邦幫忙鐵人賽得獎名單已經公佈囉
- 我的資訊便利貼之四:Web2.0風格Logo產生器
- 第一屆iT邦幫忙鐵人賽早鳥獎與鐵人鍊成獎得獎名單
- 什麼是企業Web2.0? 跟一般的Web2.0有什麼不一樣?
- [RoR] 簡單加入 Tag, Tagging 標籤功能
- [RoR] 簡單畫出 Web 2.0 特色圖形 Badges 徽章 標記
- 對於這次鐵人賽你認為哪些文章該被檢舉?
- [RoR] 簡單加入 Tag Cloud 標籤雲 功能
- [RoR] 小小複雜模仿 del.icio.us 的個人化的社會標籤 per user tagging
- 請問什麼是web2.0?
- 鐵人賽發表的文章,可以同時發佈在自己個人部落格上嗎?
- [RoR] 簡單產生 RSS Feeds 及簡易部落格聯播功能









