锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
鏁堟灉鍜寈iaonei鐨?nbsp; 鏇村鏂伴矞浜?nbsp; 涓鏍鳳細
鍓嶉潰鏈夌瘒鏂囩珷涔熶粙緇嶄簡涓涓儚 twitter more 鐨勬柟寮忓垎欏電殑鏂規硶錛屼笉榪囬偅涓槸鐢?protorype 鍋氱殑銆傘傞偅涓仛璧鋒潵綆鍗曚竴鐐癸紝鍥犱負rails緇欐垜浠皝瑁呬簡 insert_html 鍜?link_to_remote 絳夋柟娉曪紝榪欐牱鏇村姞渚挎嵎錛屼絾鏄В鍐砵query 鍜?prototype鐨刢onfilct鏄竴浠跺緢璁╀漢澶寸柤鐨勪簨錛岀儲鎬т粖澶╁張瀹炵幇浜嗕竴涓熀浜?jquery 鐨勬柟娉?鐜鏄湪rails涓紝闇瑕佷嬌鐢?will_paginate 鎻掍歡錛?br />Demo:
view:
<script>
(function($){
var settings;
$.bottomlessPagination = function(callerSettings) {
settings = $.extend({
ajaxLoaderPath:'/images/loading.gif',
results:'.results', // results 榪斿洖緇撴灉澶栭儴鐨刢lass
objName:'',
callback:null
},callerSettings||{});
settings.imgLoader = new Image();
settings.imgLoader.src = settings.ajaxLoaderPath;
settings.href = $(".current").next().attr("href"); //current 鏄?will_paginate 榛樿鐨勫綋鍓嶉〉 href 鐨勫悕瀛?br />
if ($('div.pagination').size() > 0){ // pagination 鏄?will_paginate 榛樿鐨?class
$('div.pagination').wrap("<div class='pagination_links'></div>").hide();
$('.pagination_links').append(
"<div class='live_pagination'>" +
"<a class='more_links' style='cursor:pointer;'> 鏌ョ湅 " + settings.objName + "...</a>" +
"</div>"
);
}
$(".more_links").click(function(){
$(".live_pagination").hide();
if ($(".now_loading").size() == 0)
$(".more_links").after("<img class='now_loading' src='"+settings.imgLoader.src+"' />");
else
$(".now_loading").show();
$.get(
settings.href,'',function(data){
$(settings.results).addrows(data);
$(".now_loading").hide();
$(".live_pagination").show();
}
);
return false;
});
$.fn.addrows = function(data) {
//remove live pagination if there are no more results
// alert(data.length);
if (data.length === 1 ){
// alert(data.length);
$('.live_pagination').remove();
$('.pagination_links').append(
"<div class='no_pagination'>" +
"娌℃湁" + settings.objName +
"</div>"
);
return false;
}
//change the href
ind=settings.href.indexOf("page=");
page=parseInt(settings.href.charAt(ind+5))+1;
start=settings.href.slice(0,ind+5);
stop=settings.href.slice(ind+6);
settings.href=start.concat(page.toString()).concat(stop);
//add results to the page
$(settings.results).append(data);
if (settings.callback) settings.callback();
};
};
})(jQuery);
</script>
<div class="results">
<%= render :partial => 'activity' , :collection => @all_feed %>
</div>
<%= will_paginate @all_feed ,
:class => 'pagination',
:previous_label => '« Previous',
:next_label => 'Next »',
:renderer => 'WillPaginate::LinkRenderer' %>
<div>
<div class="now_loading" style="display:none;">
<img src="http://www.tkk7.com/images/loading.gif"></img>
</div>
<script>
$.bottomlessPagination({objName:'鏇村鏇存柊', callback:function(){
//highlight current row
// $("div.results").effect("highlight", {}, 3000);
}});
</script>
Action:
def index
if request.xhr?
sleep(1) # make request a little bit slower to see loader :-)
render :partial => 'activity' , :collection => @all_feed
end
partial:_activity.html.erb
partial 閲岃緭鍑烘暟鎹嵆鍙?br />
涓昏鐨勬敞鎰忕偣灝辨槸娉ㄦ剰瀵瑰簲class 涓嶈鍐欓敊浜嗭紝鍚屾牱錛屼綘涔熷彲浠ユ妸class 鎹綅id鍋氾紝jquery鍙杋d灝辮繖鏍鳳細 $("#ID")
涓婇潰js鏂囦歡涓嬭澆錛?br />http://www.dbank.com/download.action?k=3094283bf64e445f9530ac0554ebc9ce
ref:
http://github.com/davidwparker/jquery-bottomless-pagination
]]>
鍓嶉潰鐨勯厤緗竴鏍?br />
Demo:
1,瀹夎 chronic
gem install chronic
2,瀹夎鎻掍歡
ruby script/plugin install svn://rubyforge.org/var/svn/fauna/ultrasphinx/trunk
榪欎釜鏄綉涓婃彁渚涚殑鏂規硶錛岀洰鍓嶄技涔庢壘涓嶅埌榪欎釜婧愪簡銆傘傚緩璁洿鎺ヤ粠github download 涓嬭澆
http://github.com/fauna/ultrasphinx
3錛屽畨瑁呭畬Ultrasphinx涔嬪悗錛屽皢錛?
vendor/plugins/ultrasphinx/examples/default.base
澶嶅埗鍒幫細
config/ultrasphinx/default.base
灝嗗叾涓殑錛?
charset_type = utf-8
鏀逛負錛?
charset_type = zh_cn.utf-8
騫朵笖鍦╟harset_type璁劇疆鐨勪笅闈㈠姞鍏ヤ竴琛岋細
charset_dictpath = /home/feng/RailsProject/Search/lib 錛?浣爑ni.lib 瀛楀吀鎵鍦ㄧ殑璺緞
鐒跺悗鍒犻櫎鎵鏈塩harset_table鐨勮緗?
4錛孧odel
is_indexed :fields => ['created_at', 'name']
is_indexed :fields => ['created_at', 'content']
5錛宎ction
def index
# thinking_sphinx
# @articles = Article.search params[:search], :include => :author, :match_mode => :boolean
#ultrasphinx
@search = Ultrasphinx::Search.new(:query => params[:search])
@search.run
@articles = @search.results
end
6,鐢熸垚閰嶇疆鏂囦歡錛?
rake ultrasphinx:configure
鍦╟onfig/ultrasphinx涓嬪垱寤轟簡涓涓猟evelopment.conf錛岃繖涓枃浠跺氨鏄疭phinx鐨勯厤緗枃浠躲?
7,鍒涘緩绱㈠紩錛?
rake ultrasphinx:index
绱㈠紩鍒涘緩鍦ㄤ簡 default.base 涓綘瀹氫箟鐨刾ath 璺緞涓?br />
8錛?鍚姩Sphinx鐨剆earchd鏈嶅姟錛?
rake ultrasphinx:daemon:start
瀵瑰簲鐨勫仠姝㈡槸 rake ultrasphinx:daemon:stop
9,鍚姩webrick
ok浜嗐傘傘?br />欏圭洰涓嬭澆錛?br />http://www.uushare.com/user/fl1429/file/2043752
ref:
http://www.javaeye.com/topic/200065?page=1
http://github.com/fauna/ultrasphinx
]]>
鏁堟灉棰勮錛?br />
1錛?http://www.zikii.com/ 榪欎釜緗戠珯 涔熸槸鍩轟簬 sphinx 瀹炵幇鐨?br />
2錛屾垜鐨?br />
鐢變簬欏圭洰闇瑕侊紝闇瑕佸疄鐜扮珯鍐呮悳绱紝鍏ㄦ枃媯绱㈠拰 涓枃鍒嗚瘝 鍔熻兘錛屾渶鍚庨夊瀷浜?sphinx + libmmseg + thinking_sphinx 錛?鎶樿吘浜嗗ソ澶т竴浼氾紝鏈鍚庢祴璇曟垚鍔?br />
sphinx 鏄縿鍥戒漢寮鍙戠殑opensourse 鎼滅儲寮曟搸錛岀儲寮曢熷害寰堝揩錛?libmmseg 鏄腑鍥戒漢寮鍙戠殑涓枃鍒嗚瘝紼嬪簭錛宼hinking_sphinx 鏄皝瑁呰皟鐢╯phinx鐨剅ails plugin
涓嬮潰鐢ㄥ埌鐨勬墍鏈夎祫婧?鎵撳寘涓嬭澆錛?br />
http://www.uushare.com/user/fl1429/file/2043579
1錛岄」鐩殑鎵鏈夌殑婧愮爜緙栬瘧瀹夎 錛?鍏ㄩ儴縐誨埌 /root 涓嬭繘琛?鍑℃槸鍑虹幇鏉冮檺涓嶅鐨勶紝 鍦ㄥ懡浠ゅ墠鍔犱笂 sudo
2錛屽畨瑁?libmmseg
./configure
make
make install
鍏蜂綋鍙互鍙傝冿細
http://www.coreseek.cn/opensource/mmseg/
3,瀹夎 ruby 鎵╁睍錛岃繘鍏?mmseg ruby 鐩綍涓?錛堟敞鎰忔渶鍚庨潰鏈変竴涓偣錛?br />
cd ruby
cp /usr/local/include/mmseg/*.h .
cp ../src/*.h .
cp ../src/css/*.h .
ruby extconf.lin.rb
make
sudo make install
鎴愬姛鐨勮瘽錛屽彲浠ュ埌irb涓嬶紝嫻嬭瘯鐪嬬湅鏄惁鎴愬姛浜?br />
irb
require 'mmseg'
娉ㄦ剰:濡傛灉鍦ㄨ繖涓姝ュ嚭閿?涓斿嚭閿欐彁紺轟負錛?br />
css/UnigramCorpusReader.cpp:89: error: ’strncmp’ was not declared in this scope
鍒欓渶鎵嬪伐緙栬緫.src/css鐩綍涓婾nigramCorpusReader.cpp 鏂囦歡,鍦ㄥ叾絎竴琛屽姞涓?br />
#include <string.h>
鐒跺悗閲嶆柊 make,鍗沖彲閫氳繃
4錛屽垱寤鴻緸鍏告枃浠?br />
榪涘叆 mmseg 鐨?data 鐩綍涓?br />
mmseg -u unigram.txt
鎶婄敓鎴愮殑鏂囦歡鍚嶆敼涓?uni.lib
5,瀹夎sphinx (鎶婁袱涓ˉ涓佹斁鍏?瑙e帇鍚?鐨?sphinx涓?
cd sphinx-0.9.8-rc2
patch -p1 < sphinx-0.98rc2.zhcn-support.patch 錛僷atch涓枃琛ヤ竵
patch -p1 < fix-crash-in-excerpts.patch # patch 闃瞔rash 琛ヤ竵
Copy mmseg瀹夎鏂囦歡澶逛笅 src/csr_typedefs.h 鍜?br />
src/css/SegmenterManager.h 鍒癝phinx瀹夎鏂囦歡澶逛笅鐨?src
鏂囦歡澶逛笅
./configure
make
sudo make install
娉ㄦ剰錛氬鏋滃湪榪欎竴姝ュ嚭鐜?br />
/usr/local/include/mmseg/freelist.h:22: error: ‘strlen’ was not declared in this scope
鐨勯敊璇紝鎵嬪伐淇敼 /usr/local/mmseg/include/mmseg/freelist.h
鍦ㄤ笂闈㈡坊鍔?br />
#include <string.h>
浠ヤ笂鐨勯厤緗?sphinx 灝辨敮鎸?涓枃鍒嗚瘝 鎼滅儲浜嗐傘傘?br />
Demo:
1,渚濈収 Ryan 鐨勪緥瀛?閰嶇疆 濂藉熀鏈殑鑻辨枃鎼滅儲
http://railscasts.com/episodes/120-thinking-sphinx
2錛岄噸鐐規槸 model 閲岀殑 瀹氫箟绱㈠紩
define_index do
indexes content
indexes :name, :sortable => true
indexes comments.content, :as => :comment_content
indexes [author.first_name, author.last_name], :as => :author_name
has author_id, created_at
end
3錛屾妸涓婇潰鐢熸垚鐨?uni.lib 杈炲吀鏂囦歡 鎷峰叆 欏圭洰鐨?lib 涓?錛堟垨鑰呭埆鐨勫湴鏂癸紝鐪嬩綘閰嶇疆閲岀殑charset_dictpath鐨?涓嶇紪璇戠殑璇濓紝鍙互鐢ㄥ埆浜虹幇鎴愮殑uni.lib錛?br />
4錛屽湪欏圭洰鐨?config 涓嬫柊寤轟竴涓?sphinx.yml 鏂囦歡
development: &my_settings
enable_star: 1
min_prefix_len: 0
min_infix_len: 2
min_word_len: 1
max_results: 70000
morphology: none
listen: localhost:3312
charset_dictpath: /home/feng/RailsProject/Search/lib
test:
<<: *my_settings
production:
<<: *my_settings
涓婇潰鐨?br />
/home/feng/RailsProject/Search/lib 鍙互鍐欐垚 "#{RAILS_ROOT}/lib"
5錛岀敓鎴愰厤緗枃浠?br />
rake ts:config
榪欐牱config 涓嬩細鐢熸垚涓涓?development.sphinx.conf 鏂囦歡
鎵懼埌 charset_type = utf-8 鎶婂悗闈?utf-8 淇敼涓?zh_cn.utf-8,騫跺湪涓嬮潰娣誨姞濡備笅璇彞
charset_dictpath = /home/feng/RailsProject/Search/lib 錛堜綘宸ョ▼鐨刲ib璺緞錛?br />
6錛屽緩绔嬬儲寮?br />
rake ts:index INDEX_ONLY=true
娉ㄦ剰鍚庨潰蹇呴』娣誨姞 INDEX_ONLY=true涓嶇劧鐨勮瘽錛岄厤緗枃浠朵細琚噸緗?榪樻湁涓嶈鍐欐垚 INDEX_ONLY = true
7錛屽惎鍔╯phinx鏈嶅姟
rake ts:start
8,鍚姩webrick
娉ㄦ剰錛宻phinx 蹇呴』鍦╳ebrick鐨勫墠闈?鍏堝惎鍔?br />
鎴戠殑demo欏圭洰錛屽叾瀹炲氨鏄笂闈yan 鐨勶紝涓嬭澆鍚庡彲浠ョ湅鍒版垜鐨勫叿浣撻厤緗紝鎴栬呰緇嗙殑鍐呭
http://www.uushare.com/user/fl1429/file/2043752
ref:
http://wiki.github.com/cogentsoft/zbs/180787
http://www.javaeye.com/topic/431217?page=1
http://www.javaeye.com/topic/196451
http://blog.sina.com.cn/s/blog_412d58ec010090pq.html
http://freelancing-god.github.com/ts/en/rake_tasks.html
]]>
鏁堟灉錛?br />http://www.dzone.com/links/index.html
http://flexidev.co.za/projects/jqpageflow/
http://paperc.de/documents
鍍忎笂闈㈢殑涓変釜緗戠珯 鐨勫垎欏墊晥鏋?灝辨槸 scrolling pagination , 鎴栬?鍙?pageless pagination , endless pagination 鐢ㄨ繖浜涗綔涓哄叧閿瓧錛?閮戒細鎼滃埌寰堝鐨刣emo錛?榪欓噷鎴戜粙緇?涓縐?demo錛屽紑鍙?鐜 鏄?rails 錛宱f course , 浣犱篃鍙互鍦ㄥ叾浠栫殑騫沖彴浣跨敤銆傘?br />
鏈鐢?涓鐩村湪鐢ㄥ悇縐?鍒嗛〉鐨勬晥鏋滐紝涓鑸兘鏄?ajax鐨勶紝 渚嬪鍓嶉潰 鏈変粙緇嶄簡 prototype pagenation like twitter more button, 榪樻湁 jquery ajax pagenation,榪欓噷鍙堟槸 jquery scrolling pagination.....
Demo:
渚濊禆搴?
will_paginate 鎻掍歡
jquery.js
jquery.pageless.js
璇峰埌 涓嬮潰鐨?閭d釜 ref link 閲屼笅
Action:
def show
@client_info = ClientInfo.find(params[:id])
@comments = @client_info.comments.paginate(:per_page => 5 , :page => params[:page])
if request.xhr?
sleep(2) # make request a little bit slower to see loader :-)
render :partial => 'comment' , :collection => @comments #榪斿洖 鏁版嵁鐨刾artial
end
end
瑙i噴 錛?server 绔?br />
helper method :
# scrolling paginate like greader
def pageless(total_pages, url=nil)
opts = {
:totalPages => total_pages,
:url => url
#:loaderMsg => '鍔犺澆涓?..'
}
javascript_tag("$('#ajaxcomments').pageless(#{opts.to_json});")
end
瑙i噴; 灝佽浜嗕竴涓?pageless 鏂規硶錛屽嵆瀹炵幇 scrolling load 鐨勭殑鏂規硶
view: show.html.erb
..............
<%= render :partial => 'wall' %>
.........................
瑙i噴 錛?鍓嶇 view
partial : _wall.html.erb
<div class="wall" id ="ajaxcomments">
<%- unless @client_info.comments.empty? -%>
<%= render :partial => 'comment', :collection => @comments %>
<%- end -%>
<%= will_paginate @comments ,
:class => 'pagination',
:previous_label => '« Previous',
:next_label => 'Next »',
:renderer => 'WillPaginate::LinkRenderer' %> <%#= pageless must use will_paginate default style %>
<%= pageless(@comments.total_pages, client_info_path(@client_info)) %>
</div>
瑙i噴 錛?娉ㄦ剰榪欓噷闇瑕?瀹氫箟 涓涓?id錛?榪樻湁 灝辨槸 will_paginate 閲岀殑閭d簺 鍙傛暟 鍙互 涓嶈 鐨勶紝榪欓噷鎴戝姞鐨勶紝鏄洜涓?鎴戠殑 enviroment.rb 涓?鍔犱簡 will_paginate 鐨?閰嶇疆錛屽鏋?浣犳病鏈夌殑璇濓紝 鍙互鍘繪帀鐨?br />partial : _comment.html.erb
..............
<%= display comment.body %>
.........................
瑙i噴 錛?鏄劇ず鐨?鍐呭
ref :
http://github.com/jney/jquery.pageless/tree/master
]]>
anchor 璇寸櫧浜?灝辨槸 榪涘叆 榪欎釜 欏甸潰鐨勬椂鍊欙紝 瀹氫綅鍒伴〉闈㈡寚瀹氱殑閮ㄥ垎錛屼緥濡備竴涓釜浜虹敤鎴風殑鐣岄潰錛屾渶涓嬮潰鏄暀璦鐗堬紝濡傛灉浣犻噰鐢ㄤ紶緇熺殑鏂瑰紡鎻愪氦鐣欒█鐨勮瘽錛岄偅涔堝氨鍙互浣跨敤anchor瀹氫綅鎻愪氦鍚庢樉紺虹殑浣嶇疆
浣跨敤鏂規硶錛?br />
1,url鏍囪瘑
a href = ............./network#Comment
network.html.erb
<a name="Comment"></a>
鍙鍦╪etwork.erb.html 欏甸潰涓姞鍏?nbsp; 涓婇潰 閭e彞璇濓紝 鍔犲湪鍝噷 灝卞畾浣嶆樉紺哄湪鍝簡,鎴栬?鎸囧畾涓涓?div鐨刬d鍊間負 Comment 鍗沖彲
2錛宺ails 鑷甫鐨?:anchor 鍙傛暟
url or path :
user_path(@user,:anchor => 'Comment')
user_url(@user,:anchor => 'Comment')
涓婇潰鍦╮ails RESTful 鏋舵瀯鐨勭▼搴忎腑 緇忓父 鍙榪欑璺緞鍐欐硶錛岄偅涔堜綘鍙互鍒╃敤 :anchor 鏉ユ爣璇嗐傘傘?br />
]]>
璁板緱浠ュ墠鏂囩珷鍐欒繃 rails autocomplete 鎻掍歡鐨勪嬌鐢ㄦ柟娉曪紝 閭d釜鏄熀浜?prototype 鐨勶紝 騫蟲椂Jquery鐢ㄧ殑鏈澶氥傘傛墍浠ュ繀欏葷敤jquery 瀹炵幇 錛?榪欐牱鐨?demo 緗戜笂澶銆傘傘傘備笅闈粙緇嶅湪rails 涓殑涓縐峴olution
闇瑕佺殑錛?br />
jquery.js
jquery.complete.js
jquery.autocomplete.css
demo :
View:
<script>
$(document).ready(function() {
$("#recipient").autocomplete("/myaccount/res_message", {
delay:10,
minChar: 1,
multiple: true,
parse: function(data) {
return $.map(eval(data), function(item) {
return {
data: item,
value: item.name,
result: item.name
}
});
},
formatItem: function(item) {
return item.show;
}
}).result(function(e, item)
{
$("#recipient").val(item.name);
});
});
</script>
<p><%= text_field_tag :recipient, :id => 'recipient' %></p>
瑙i噴錛?br />
#recipient 鏄搴旂殑 id
/myaccount/res_message 瀵瑰簲璇鋒眰鐨?url
item鏄弬鏁?br />
name 鍜?show 鏄?榪斿洖鐨勫彉閲?br />
action:
def res_message
key = params[:q] if params[:q]
@result = ClientInfo.get_login_name(key, '' , 'key')
respond_to do |format|
format.js # default : res_message.js.erb
end
end
瑙i噴 params[:q] q 鏄粯璁ゅ悜鍚庡彴鍙戦佺殑鍏抽敭瀛楁煡璇?鍙傛暟錛?騫朵笖榛樿鐨刲imit 鏄?0 鏉℃暟鎹?br />
view:res_message.js.erb
<% if @result -%>
<% i=0 %>[
<% for result in @result %>
<% if i==0 %>
{name:"<%= result.login_name %>",show:"<%= result.login_name + " " %>" + "<%= result.sure_name.nil? ? " " : result.sure_name + " " %>"}
<% else %>
,{name:"<%= result.login_name %>",show:"<%= result.login_name + " " %>" + "<%= result.sure_name.nil? ? " " : result.sure_name + " " %>"}
<% end %>
<% i+=1 -%>
<% end -%>]
<% end -%>
瑙i噴錛?璇iew 鏄繑鍥炵殑鏁版嵁錛岃繑鍥炵殑鏄竴涓狫SON鏁扮粍
鍏蜂綋璇︾粏鐨勫彲浠ュ弬鑰冿細
http://docs.jquery.com/Plugins/Autocomplete
http://view.jquery.com/trunk/plugins/autocomplete/demo/
]]>
鏁堟灉棰勮錛?br />
涓鑸?鎴戜滑 鍦╮ails 涓?鍒嗛〉 will_paginate 鏄繀涓嶅彲灝戠殑鎻掍歡錛屼絾鏄?涓鑸兘鏄熀浜?prototype 鐨勶紝渚嬪 ajax 寮忕殑鍒嗛〉錛?閫氳繃 RemoteLinkRenderer鏀瑰彉 css 鏍峰紡絳夌瓑錛岄兘鏄?鍩轟簬prototype 鐨勶紝浣嗘槸 prototype 鍜?Jquery 鍦ㄩ」鐩腑 緇忓父閬囧埌conflict 錛岃繖涓?寰?璁╀漢 澶寸柤錛宺ails 灝佽濂界殑ajax鏂規硶錛屽ソ澶?閮藉洜涓?jquery 涓嶈兘鐢紝jquery 閭d箞 濂?鍓嶇 鐢ㄦ埛浣撻獙錛屽張鍥犱負 prototype 鍑虹幇 conflict 錛?鍝?涓轟粈涔?鐩鎬簰孌嬫潃 鍛€傘傘傘傘?br />
涓婇潰瀹炵幇鐨勬牳蹇冩濇兂 鏄?鍓嶇 閫氳繃 jquery鐨?寮傛璋冪敤鏁版嵁錛?鍚庡彴 rails 閫氳繃 respond_to fotmat.js 鐨勬柟寮?緇欎簣 榪斿洖鏁版嵁銆傘傘?br />
Demo:
layout 涓鍏ワ細
<%= stylesheet_link_tag 'pagination' -%>
<%= javascript_include_tag 'jquery' %>
pagination 鏄敼鍙樺垎欏電殑鏍峰紡
Action:
def index
@products = Product.paginate(:per_page => 10, :page => params[:page])
respond_to do |format|
format.html #default : index.html.erb
format.js {:layout => false} # default : index.js.erb
end
end
View:
index.html.erb
<div id="product">
<%= render :partial => 'products' %>
</div>
index.js.erb
$("#product").html("<%= escape_javascript(render :partial => "products") %>");
escape_javascript 鏄漿涔夌殑鎰忔?鍜?<%=h %> 榪欓噷鐨?h 宸笉澶?br />
partial :
_products.html.erb
<script>
$(function() {
$(".apple_pagination a").live("click", function() {
$(".apple_pagination").html("Page is loading...");
$.get(this.href, null, null, "script");
/* alert(this.href); */
return false;
});
});
</script>
<%= will_paginate @products , :class => 'apple_pagination' ,:previous_label => '<<涓婁竴欏?, :next_label => '涓嬩竴欏?gt;>' :renderer => 'WillPaginate::LinkRenderer' %>
<% for product in @products %>
<div class="product">
<h3>
<%= link_to h(product.name), product %>
<%= number_to_currency(product.price) %>
</h3>
</div>
<% end %>
涓婇潰鐨?$(".apple_pagination a") 鍗蟲槸 will_paginate 鐨?:class 錛岋細renderer 浣跨敤鐨勬槸will_paginate 鐨刣efault 鐨勶紝濡傛灉 enviroment.rb 涓厤緗簡will_paginate鐨勬牱寮忥紝榪欓噷涓嶅啓 :renderer 浼氬嚭閿欙紒錛屽叿浣撻粯璁ょ殑鍙傛暟 鍙互鏌ョ湅 will_paginate 涓嬬殑 view_helpers.rb
鍏ㄩ儴 婧愮爜 涓嬭澆錛?br />
http://www.uushare.com/user/fl1429/file/1941241
閰嶇疆鏂規硶錛?br />
1錛岃繘鍏ュ伐紼嬶紝 rake setup
2,ruby script/server
3,okay 鎴愬姛 浜嗐傘傘傘?br />
琛ュ厖 錛?濡傛灉 涓涓?欏甸潰 鏈変袱澶勯渶瑕?鍒嗛〉錛岄偅涔?will_paginate 榛樿 鎯呭喌涓?鏄悓鏃剁炕欏電殑銆傘傞偅涔?濡備綍 閬垮厤鍛€傘傚彧闇瑕?緇欏悇鑷殑 will_paginate 鎸囧畾 涓嶅悓鐨?class 鍗沖彲 渚嬪
will_paginate :
<%= will_paginate collection ,
:class => "apple_paginate my_paginate",
:previous_label => '<<涓婁竴欏?,
:next_label => '涓嬩竴欏?gt;>' ,
:renderer => 'WillPaginate::LinkRenderer' %>
apple_paginate 鏄?鍒嗛〉鐨勭湡姝g殑 css錛宮y_paginate 鏄負浜?鍖哄埆 涓嶅悓鍖虹殑 鍒嗛〉 鑰屽姞鐨?br />
jquery script :
jQuery(function() {
jQuery(".my_paginate a").live("click", function() {
jQuery(".my_paginate").html("姝e湪鍔犺澆...");
jQuery.get(this.href, {flag : "my" }, null, 'script');
return false;
});
});
娉ㄦ剰 jquery get 鏂規硶鐨?鍥涗釜鍙傛暟 鐨?鎰忎箟
ref:
http://railscasts.com/episodes/174-pagination-with-ajax
http://soylentfoo.jnewland.com/articles/2007/09/17/resource_this-dry-rails-resource-controllers
http://book.csdn.net/bookfiles/375/10037514155.shtml
http://stackoverflow.com/questions/1268383/format-js-with-rails
]]>
鏌ヤ簡涓嬶紝 璇?p 鏄粡榪?inspect 鐨勶紝inspect鐨勫瓧闈㈡剰鎬濇槸 媯鏌?錛岃矊浼?鏄鏌?鍗犱綅絎?錛屼絾鏄繕鏄簯閲岄浘閲?br />
鐪嬩袱涓猟emo
one錛?br />
p "a", "\nb"
緇撴灉錛?br />"a"
"\nb"
two:
class SomeClass
def initialize (arg_1, arg_2) # called with SomeClass.new
@member_1 = arg_1
@member_2 = arg_2
end
def print
puts "member_1: " + @member_1
puts "member_2: " + @member_2
end
end
sc1 = SomeClass.new('foo', 'bar')
puts sc1.inspect
p sc1
puts sc1
緇撴灉錛?br />#<SomeClass:0xb7c091b4 @member_1="foo", @member_2="bar">
#<SomeClass:0xb7c091b4 @member_1="foo", @member_2="bar">
#<SomeClass:0xb7c091b4>
榪樻湁灝辨槸鎴戜滑 鏈甯哥敤鍒扮殑銆傘傘傛煡璇㈡暟鎹簱涓竴鏉℃暟鎹褰曢泦
@post = BlogPost.find(params[:id])
p @post
puts @post
緇撴灉錛?br />#<BlogPost id: 18, blog_id: 30, topic_id: nil, client_info_id: nil, title: "嫻嬭瘯", body: "嫻嬭瘯嫻嬭瘯嫻嬭瘯嫻嬭瘯嫻嬭瘯嫻嬭瘯嫻嬭瘯嫻嬭瘯嫻?..", blog_post_comments_count: 0, type: "BlogPost", created_at: "2009-08-24 03:56:27", updated_at: "2009-08-24 03:56:27">
#<BlogPost:0xb595b8b0>
榪欐牱 鐪嬭搗鏉?鏇翠竴鐩簡鐒躲傘傘?p 鎶婃暟鎹簱涓殑 瀛楁 鍜屽?閮借緭鍑?浜嗭紝 puts 鍙緭鍑?涓涓?瀵硅薄鐨勬爣璇嗐傘傘?br />
ref錛?br />http://www.adp-gmbh.ch/ruby/language/inspect.html
http://stackoverflow.com/questions/1255324/p-vs-puts-in-ruby
http://blog.chinaunix.net/u1/37038/showart_489434.html
]]>
a = "嫻媋璇?涓枃aaa"
b = 'test'
p a.size # 17 錛堝彲浠ョ湅鍑轟竴涓腑鏂囧瓧絎﹀湪ruby涓槸3涓嫳鏂囧瓧絎︼級
p b.length # 4
puts a.slice(0,13) # 嫻媋璇?涓拷 slice method 錛?鏄痵tart涓嬫爣澶勶紝13鏄痩ength錛?/font>
鏈鍚庝竴涓緭鍑烘渶鍚?鏄貢鐮侊紝鍦╦ava涓槸unicode緙栫爜灝辨病鏈夎繖涓棶棰橈紝鎵浠ユ垜浠渶瑕佽漿鎹笅緙栫爜鏉ヨВ鍐熾傘?br />
渚嬪鍦╮ails鐨?application_helper.rb 瀹氫箟涓涓漿鎹㈢殑鏂規硶
def cut_string(charset,src,start,length)
require "iconv"
@conv=Iconv.new("UTF-16",charset)
@reverse_conv=Iconv.new(charset,"UTF-16")
p_start=start.class==Fixnum&&start>=0
p_length=length.class==Fixnum&&length>=0
return "" unless src&&p_start&&p_length
src_utf16=@conv.iconv(src)
cutted_src_utf_16=src_utf16[2*start+2,2*length]
@reverse_conv.iconv(cutted_src_utf_16)
end
view涓嬌鐢細
<%
a = '嫻媋 璇曚腑鏂?
puts cut_string('UTF-8',a,0,4) # 嫻媋 璇?br />
%>
ref:
http://my.opera.com/sawpad/blog/show.dml/235183
http://www.javaeye.com/topic/201531
琛ュ厖錛?br />
鐪熶激蹇冿紝涔嬪墠鎴彇瀛楃涓詫紝鐢ㄤ笂闈㈢殑鏂規硶錛岃繕闇瑕佽嚜宸卞皝瑁咃紝鑷繁杞爜瑙e喅錛屾病鎯沖埌rails宸茬粡鎶婃垜浠皝瑁呭ソ浜嗐傘傚氨鏄?truncate 鏂規硶銆傘傜湅浜嗕笅婧愮爜鐪熺畝鍗曪紝鍙渶瑕佽緭鍑哄搴斿瓧絎︿覆鐨刢hars 灝辮В鍐充簡錛屾簮鐮侊細
def truncate(text, length = 30, truncate_string = "...")
if text
l = length - truncate_string.chars.length
chars = text.chars
(chars.length > length ? chars[0...l] + truncate_string : text).to_s
end
end
浣跨敤demo錛?br />
<%
a = 'test'
b = '嫻嬭瘯涓枃'
p truncate(a,2,'...') # "tes..."
p truncate(b,2,'...') # "嫻嬭瘯涓?.."
%>
濡傛灉闇瑕佸緱鍒版眽瀛楃殑闀垮害 鍙互浣跨敤 jcode 搴?閲岀殑 jlength
demo:
s = "嫻嬭瘯140瀛楁祴璇?40瀛楁祴璇?40瀛楁祴璇?40瀛楁祴璇?40瀛楁祴璇?40瀛楁祴璇?40瀛楁祴璇?40瀛楁祴璇?40瀛楁祴璇?40瀛楁祴璇?40瀛楁祴璇?40瀛楁祴璇?40瀛楁祴璇?br />
140瀛楁祴璇?40瀛楁祴璇?40瀛楁祴璇?40瀛楁祴璇?40瀛楁祴璇?40瀛楁祴璇?40瀛楁祴璇?40瀛楁祴璇?40瀛楁祴璇?"
$KCODE='utf8'
require 'jcode'
p s.jsize
p s.jlength
ref:
http://blog.guoshuang.com/?p=4769
http://lifegoo.pluskid.org/?p=257
]]>
鍦ㄧ敤鍒皉ails <%= time_ago_in_words(activity.created_at).capitalize %> 涔嬪墠 鏂規硶鏃?錛?杈撳嚭鐨勭粨鏋滈粯璁ゆ槸鑻辨枃鐨勩傘傚涓?br />
闇瑕侀噸鍐欏師鏉ョ殑鏂規硶錛岀敤鐨勬槸rails2.1.0 濡傛灉鏄痳ails 2.2.2涔嬪悗鐨勶紝璨屼技鍙互浣跨敤I18N鐨勩傘傛墍浠ュ彧濂介噸鍐檓ethod浜?br />
鍒氬紑濮嬫槸鏀懼湪lib涓嬶紝 鐒跺悗鍦╡nviroment.rb涓璻equire鐨勶紝浣嗘槸鍚庢潵娌℃湁鎴愬姛錛屽彧濂芥斁鍦╥nitializers涓簡
鏂板緩 date_helper.rb:(鍙互闅忎究鍛藉悕)
module ActionView
module Helpers
module DateHelper
def distance_of_time_in_words(from_time, to_time = 0, include_seconds = false)
from_time = from_time.to_time if from_time.respond_to?(:to_time)
to_time = to_time.to_time if to_time.respond_to?(:to_time)
distance_in_minutes = (((to_time - from_time).abs)/60).round
distance_in_seconds = ((to_time - from_time).abs).round
case distance_in_minutes
when 0..1
return (distance_in_minutes == 0) ? '灝戜簬1鍒嗛挓' : '1 鍒嗛挓' unless include_seconds
case distance_in_seconds
when 0..4 then '灝戜簬 5 縐?
when 5..9 then '灝戜簬 10 縐?
when 10..19 then '灝戜簬 20 縐?
when 20..39 then '鍗婂垎閽?
when 40..59 then '灝戜簬 1 鍒嗛挓'
else '1 鍒嗛挓'
end
when 2..44 then "#{distance_in_minutes} 鍒嗛挓"
when 45..89 then '澶ф 1 灝忔椂'
when 90..1439 then "澶ф #{(distance_in_minutes.to_f / 60.0).round} 灝忔椂"
when 1440..2879 then '1 澶?
when 2880..43199 then "#{(distance_in_minutes / 1440).round} 澶?
when 43200..86399 then '澶ф 1 涓湀'
when 86400..525599 then "#{(distance_in_minutes / 43200).round} 涓湀"
when 525600..1051199 then '澶ф 1 騫?
else "瓚呰繃 #{(distance_in_minutes / 525600).round} 騫?
end
end
end
end
end
鍘熸潵鐨勬柟娉曪紝鍙互鍒?br />
/usr/lib/ruby/gems/1.8/gems/actionpack-2.1.0/lib/action_view/helpers/date_helper.rb 涓壘鍒?br />
涔嬪悗閲嶅惎鏈嶅姟錛宱kay浜嗐傘傘傘傘傘?br />
ref錛?br />
http://www.nabble.com/Rails-2.1-and-ddatetime_select-td17726324.html
http://hervalicio.us/blog/2007/05/10/translating-time_ago_in_words/#comment-16360
http://fsjoy.blog.51cto.com/318484/119541
]]>
鎵撳紑 http://www.google.cn/finance?q=600001 榪欎釜緗戝潃 鍙互鐪嬪埌 璋鋒瓕璐㈢粡鐨?鍙充晶 鏈変釜鏂伴椈鍖恒傘傘傝繖涓柊闂誨尯灝辨槸浠庡埆鐨勫湴鏂規姄鍙栨潵鐨?br />
鎴浘錛?br />
鐜板湪鎴戜滑涔熸潵浠跨収瀹冩潵瀹炵幇涓涓紝棣栧厛rails瑙f瀽rss鏈変袱縐嶆柟寮忥紝涓縐嶆槸鐢ㄥ皝瑁呭ソ鐨勭被搴擄紝涓縐嶆槸鐢ㄥ師濮嬬殑瑙f瀽xml鐨勬柟寮?鎴栬呭埄鐢ㄥ埆浜哄皝瑁呭ソ鐨勫簱 渚嬪feedtools, rubyrss 絳?br />
鐢ㄧ被搴撶殑鏂規硶錛?br />
require 'rss/2.0'
require 'open-uri'
url = "http://news.google.cn/news?pz=1&ned=ccn&hl=zh-CN&topic=b&output=rss"
@feed = RSS::Parser.parse(open(url).read, false)
@feed.items.each do |item|
puts item.title
puts item.link
puts item.description
end
瑙f瀽xml鐨勬柟娉曪細
鍦╨ib涓嬪緩绔嬩竴涓猂ssParser鐨勭被錛岃繖鏍峰湪浠諱綍鍦版柟閮藉彲浠ヨ皟鐢?br />
class RssParser
require 'rexml/document'
def self.run(url)
xml = REXML::Document.new Net::HTTP.get(URI.parse(url))
data = {
:title => xml.root.elements['channel/title'].text,
:home_url => xml.root.elements['channel/link'].text,
:rss_url => url,
:items => []
}
xml.elements.each '//item' do |item|
new_items = {} and item.elements.each do |e|
new_items[e.name.gsub(/^dc:(\w)/,"\1").to_sym] = e.text
end
data[:items] << new_items
end
data
end
end
action涓嬌鐢細
def test
feed = RssParser.run("http://news.google.cn/news?pz=1&ned=ccn&hl=zh-CN&topic=b&output=rss")
feed1 = feed[:items][0]
feed2 = feed[:items][0]
feed3 = feed[:items][0]
# combine the feeds into an array
@feeds = [feed1, feed2, feed3]
# parse the pubDate strings into a DateTime object
@feeds.each {|x| x[:pubDate] = DateTime.parse(x[:pubDate].to_s)}
# iterate through each feed, sorting by pubDate
@feeds.sort! {|a,b| a[:pubDate] <=> b[:pubDate]}
# reverse the array to sort by descending pubDate
@feeds.reverse!
@feeds.each do |feed|
puts feed[:title]
puts feed[:link]
puts feed[:pubDate]
end
end
閭d箞涓婇潰鐨則itle link description 鏄粠鍝噷鏉ョ殑鍛€傘傘傝繖涓槸rss2.0鐨剎ml緇撴瀯錛屼竴鑸儏鍐典笅鏄繖鏍風殑錛?br />
<?xml version="1.0" encoding="utf-8"?>
okay....宸茬粡鎴愬姛浜嗭紝鎴戝疄鐜扮殑鎴浘錛?br />
<rss version="2.0">
<channel>
<title>Example Feed</title>
<description>Insert witty or insightful remark here</description>
<link>http://example.org/</link>
<lastBuildDate>Sat, 13 Dec 2003 18:30:02 GMT</lastBuildDate>
<managingEditor>johndoe@example.com (John Doe)</managingEditor>
<item>
<title>Atom-Powered Robots Run Amok</title>
<link>http://example.org/2003/12/13/atom03</link>
<guid isPermaLink="false">urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a</guid>
<pubDate>Sat, 13 Dec 2003 18:30:02 GMT</pubDate>
<description>Some text.</description>
</item>
</channel>
</rss>
鎴栬呬綘鍙互鏌ョ湅rss鐨勯〉闈㈡簮浠g爜錛屾垨鑰卲uts涓?nbsp; @feed = RSS::Parser.parse(open(url).read, false)鐨勭粨鏋滈兘鍙互鐪嬪埌涓婇潰鐨勮繖涓瓁ml鏂囨。緇撴瀯
濂斤紝涓嬮潰鎴戜滑寮濮嬪疄鐜頒笂闈㈠浘鐨勬柊闂伙細
鎴戜滑鍙互鎶婅繖涓儴鍒嗘斁鍦╬artial閲岋紝鎵浠ュ彧闇瑕乭elper鍜宲artial鏂囦歡
helper錛?br />
def feed_collection(param)
require 'rss/2.0'
require 'open-uri'
# from news.google.cn
urlhot = "http://news.google.cn/news?pz=1&ned=ccn&hl=zh-CN&topic=b&output=rss"
urlfinance = "http://news.google.cn/news?pz=1&ned=ccn&hl=zh-CN&topic=ecn&output=rss"
urlfund = "http://news.google.cn/news?pz=1&ned=ccn&hl=zh-CN&topic=stc&output=rss"
urlfinancing = "http://news.google.cn/news?pz=1&ned=ccn&hl=zh-CN&topic=pf&output=rss"
case param
when 'hot'
RSS::Parser.parse(open(urlhot).read, false)
when 'finance'
RSS::Parser.parse(open(urlfinance).read, false)
when 'fund'
RSS::Parser.parse(open(urlfund).read, false)
when 'financing'
RSS::Parser.parse(open(urlfinancing).read, false)
end
end
def feed_link(param)
require 'cgi'
CGI.unescape(param.slice(/(http%).*(&)/)).gsub(/&/,'') if param # 鎶婂崄鍏繘鍒惰礬寰?渚嬪http%3A2F涔嬬被鐨勮漿鍖栦負 瀛楃
end
def feed_title(param)
param.slice(/.*(-)/).gsub(/-/,"") if param #鎴彇闇瑕佺殑title
end
def feed_from(param)
param.slice(/( - ).*/).from(2) if param # 鎴彇闇瑕佺殑閮ㄥ垎
end
partial: _feednews.erb.html
<div class="slides">
<div><%= render :partial => 'shared/feednews_item',:collection => feed_collection("hot").items %></div>
<div><%= render :partial => 'shared/feednews_item',:collection => feed_collection('finance').items %></div>
<div><%= render :partial => 'shared/feednews_item',:collection => feed_collection('fund').items %></div>
<div><%= render :partial => 'shared/feednews_item',:collection => feed_collection('financing').items %></div>
</div>
涓諱箟榪欓噷鍙傝冧簡 jquery鐨刲oopslider 鎻掍歡錛堝夠鐏墖錛?鍔犺澆鏄劇ず鐨勫彧鏄涓涓猟iv閮ㄥ垎錛屽彲浠ュ弬鑰冿細
http://github.com/nathansearles/loopedSlider/tree/master
partial: _feednews_item.html.erb
<ul>
<% unless feednews_item.nil? %>
<li class="news"><a href="<%= feed_link(feednews_item.link) %>" target="_blank"><%= feed_title(feednews_item.title) %></a>
<span class="grey small"><span> <%= feed_from(feednews_item.title) %></span> — <span><%= feednews_item.pubDate.to_date %></span></span></li>
<% end %>
</ul>
ref:
http://www.rubycentral.com/book/ref_c_string.html
http://www.javaeye.com/topic/60620
http://www.troubleshooters.com/codecorn/ruby/basictutorial.htm#_Regular_Expressions
http://paranimage.com/15-jquery-slideshow-plugins/#respond
http://hi.baidu.com/todayz/blog/item/83c1b219d966fd4142a9ad5f.html
http://dennis-zane.javaeye.com/blog/57538
http://sporkmonger.com/projects/feedtools/
http://rubyrss.com/
http://rubyrss.com/
http://www.superwick.com/archives/2007/06/09/rss-feed-parsing-in-ruby-on-rails/
http://www.ruby-forum.com/topic/144447
]]>
Rails 鍦?partial 涓?浼犻?collection錛岄粯璁ょ殑寰幆鍙橀噺 鏄?partial鐨勫悕瀛楋紙綰﹀畾錛夈傛垨鑰呬綘鎯蟲敼鍙樺彉閲忓悕鐨勮瘽錛屽彲浠ヤ嬌鐢?:as 鍙傛暟澹版槑涓涓彉閲忋傘傘備笉鑳界敤鎯ф濇兂 for ...........in........絳?br />
渚嬪錛?br />
涔嬪墠閿欒鐨勫啓娉曪細
partial : _feednews.html.erb
<%= render :partial => 'shared/feednews_item',:collection => @feeds = feed_collection("hot").items %>
partial : _feednews_item.html.erb
<ul>
<% for feed in @feeds.items %>
<li class="news"><a href="<%= feed_link(feed.link) %>" target="_blank"><%= feed_title(feed.title) %></a><br />
<span class="grey small"><span> <%= feed_from(feed.title) %></span> — <span><%= feed.pubDate.to_date %></span></span></li>
<% end %>
</ul>
涓婇潰絎簩涓?partial 鏄劇ず鐨勭粨鏋?for 寰幆 杈撳嚭 鍚庣殑 鍔犱笂 rails 綰﹀畾鐨刾artial collection 寰幆杈撳嚭浜嗐傘傜粨鏋滈噸澶嶃傘傚仛鐨勮繃紼嬩腑榪橀亣鍒?partial collection empty 榪欎釜寮傚父
鍘熷洜鏄? feed_collection("hot").items 榪斿洖鐨勭粨鏋滀笉鏄竴涓?collection..
姝g‘鐨勫啓娉曪細
partial : _feednews.html.erb
<div><%= render :partial => 'shared/feednews_item',:collection => feed_collection("hot").items %></div>
partial : _feednews_item.html.erb
<ul>
<% unless feednews_item.nil? %>
<li class="news"><a href="<%= feed_link(feednews_item.link) %>" target="_blank"><%= feed_title(feednews_item.title) %></a><br />
<span class="grey small"><span> <%= feed_from(feednews_item.title) %></span> — <span><%= feednews_item.pubDate.to_date %></span></span></li>
<% end %>
</ul>
浠庝笂闈㈢殑prtial涓彲浠ョ湅鍑?鍙橀噺 鏄痜eednews_item 涔熷氨鏄痯artial鐨勫悕瀛?br />
鎬葷粨錛屼竴鍙ヨ瘽錛屽鏋?浣犲湪 partial 涓?浼犱簡 collection ,閭d箞 灝辯敤 partial鐨勫悕瀛?浣滃彉閲忚緭鍑猴紝 涓嶉渶瑕?榪唬錛?濡傛灉 娌℃湁 浼燾ollection 錛?閭d箞 灝遍渶瑕?榪唬杈撳嚭錛?br />
]]>
鏈夎繖鏍蜂竴涓渶姹傦紝闇瑕佺敤鍒?铏氭嫙鍏寵仈
鍦⊿NS涓紝渚嬪xiaonei錛宒ouban絳夌瓑閮芥湁 鏈榪戝ソ鍙嬫洿鏂扮殑鍐呭鏄劇ず錛岄偅涔堣繖涓?涓鑸槸鍦ㄤ竴涓?琛ㄤ腑錛屼緥濡?鍙玜ctivities 琛紝鏇存柊鏈夊緢澶氱 錛屼緥濡?淇敼澶村儚錛屽彂琛ㄦ棩蹇楋紝寤虹珛浜嗗ソ鍙嬪叧緋伙紝鍙戣〃璇勮絳夌瓑錛屻傘傝鐧戒簡灝辨槸 涓涓〃 鍏寵仈浜?澶氫釜琛紝閭e氨寰楃敤鍒?铏氭嫙 鍏寵仈浜嗐傘?br />
琛ㄧ粨鏋勶細
鍘熺悊錛?br />
涓婇潰鏈変笁涓〃錛宎ctivities琛紙璁板綍鏇存柊浜嗛偅浜涙搷浣滐紝鏈閲嶈鐨勪袱涓瓧孌墊槸item_id,鍜宨tem_type,item_id鏄搴斿埌鍏寵仈琛ㄧ殑涓婚敭id錛宨tem_type鏄搴斿埌鍏寵仈琛ㄧ殑琛ㄥ璞″悕渚嬪comments琛ㄥ氨鏄疌omment錛?Posts琛?錛堢敤鎴峰彂琛ㄦ枃瀛楃殑琛紝渚嬪鏈夊彂琛╞log鐨刡log_id,鍙戣〃璁哄潧 topic鐨?topic_id,緇欑敤鎴風暀璦鐨刢lient_info_id,body鏄彂琛ㄧ殑鍐呭錛夛紝
comments琛紙璇勮琛紝body鏄瘎璁哄唴瀹癸紝褰撶劧璇勮涔熷ソ濂藉縐嶈瘎璁猴紝榪欎釜琛ㄩ噷涔熼渶瑕佸叧鑱旇澶氳〃錛屼粠comments琛ㄧ殑瀛楁涓篃鍙互鐪嬪埌鐢ㄤ簡铏氭嫙鍏寵仈錛?br />
鐢ㄦ硶錛?br />
model:
activity
class Activity < ActiveRecord::Base
................
belongs_to :item, :polymorphic => true
..........................
end
Comment
..................
has_many :activities, :foreign_key => "item_id" , :dependent => :destroy
..................
鍔犱笂 :dependent => :destroy 鏄綋榪欐潯璇勮鍒犻櫎鏃訛紝activities 琛ㄩ噷鐨勮褰曞悓鏃惰鍒犻櫎
鎴栬咃細
has_many :activities, :as => :item , :dependent => :destroy
閭d箞 Post 妯″瀷 鍚岀悊鍙緱銆傘傘傘?
鍥犱負涓婇潰鐨?:item 錛?鎵浠?activities 琛ㄩ噷鐨?item_id 錛?nbsp; item_type 鏄害瀹氫織鎴愮殑銆傘傘傘傘傘傘傘傘?br />
鍙栨暟鎹?br />
activity.item.body
activity 鏄痑ctivities琛ㄤ腑鐨勮褰曞璞?br />
ref錛?br />
http://guides.rails.info/association_basics.html
http://hideto.javaeye.com/blog/76709
http://hi.baidu.com/rainchen/blog/item/fc3a94eeb31ad62b2df53412.html
http://iceskysl.1sters.com/?action=show&id=25
http://rubycnrails.cn/articles/23 錛堜簡瑙?dependent=>:destroy錛?br />
]]>
view:
<div id="activity_<%=activity.id%>" class="blog_item clearfix">
..........
<%= link_to_remote image_tag("/images/icons/network/close.gif"),
:url => {:controller=>'activities', :action =>'destroy',:id=>activity.id },
:method => :delete,
:confirm => %(紜鍒犻櫎鏇存柊?)
%>
</div>
controller:
def destroy
@activity.destroy
# flash[:notice] = "鐘舵佸凡鍒犻櫎"
respond_to do |format|
format.html { redirect_to :back }
format.xml { head :ok }
format.js do
render :update do |page|
page.remove "activity_#{@activity.id}"
end
end
end
end
ref錛?br />http://scottmotte.com/archives/62.html
]]>
鎴戜滑鐭ラ亾rails涓垎欏典竴鑸槸will_paginate鎻掍歡 錛?濡傛灉鎯沖疄鐜皌witter閭f牱鐨刴ore鐨勬柟寮忥紝閭e氨寰楃敤鍒皐ill_paginate鎻掍歡 鍜?ajax鐨勬搷浣滀簡錛屾牳蹇冩濇兂鏄湪div id 鐨刡ottom澶?insert_html , 姣斿師鏉ョ殑鐩存帴 will_paginate 紼嶅井澶嶆潅涓鐐癸紝緗戜笂鏈夊緢澶氭槸鍍廹reader閭f牱鐨勬粴灞忚嚜鍔ㄥ姞杞界殑鏂規硶 google涓涓?endless pagination 灝辨湁寰堝
鏁堟灉錛?br />
婧愮爜涓嬭澆錛?br />
http://www.uushare.com/user/fl1429/file/1882575
涓嬭澆鍚庝嬌鐢ㄦ柟娉曪細
1錛岄厤緗繛鎺ysql鏁版嵁搴撶殑yml錛屽茍鍦ㄦ暟鎹簱涓緩绔嬬浉淇$殑db
2錛岃繘鍏ュ伐紼?rake db:migrate
3,鍦ㄦ暟鎹簱涓坊鍔犱竴浜涙暟鎹?br />
4錛宱kay 鍚姩嫻嬭瘯
鍙﹂檮婊氬睆鍔犺澆鐨勪唬鐮佷笅杞斤紝閰嶇疆浣跨敤鏂規硶 鍜?涓婇潰綾諱技
http://www.uushare.com/user/fl1429/file/1882506
ref:
http://net.tutsplus.com/tutorials/javascript-ajax/create-a-twitter-like-load-more-widget/
http://d.hatena.ne.jp/hichiriki/20090415/1239751466
http://github.com/jney/jquery.pageless/blob/90213b1168ef23718e7dd8989e593f7e3a2d5c6d/README.textile
http://www.railsillustrated.com/screencast-endless-page.html
]]>
localhost:8808 嫻忚銆傘傘傘?br />
鍞竴鐨勫ソ澶勬槸鍙互鏌ョ湅鐢佃剳閲屽畨瑁呮墍鏈夌殑gem rdoc
]]>
demo:
delaware = { 1 => "Two", 2 => "New Value", 3 => "New Three" , 8 => "Five" }
myhash = { 1 => "One", 2 => "Two", 3 => "Three", 4 => "Four", 5 => "Five" }
puts delaware
puts myhash
puts delaware.merge(myhash)
puts myhash.merge(delaware)
緇撴灉錛?br />1Two2New Value8Five3New Three
5Five1One2Two3Three4Four
5Five1One2Two8Five3Three4Four
5Five1Two2New Value8Five3New Three4Four
ref錛?br />http://ruby-doc.org/core/classes/Hash.html#M002880
http://www.java2s.com/Code/Ruby/Hash/Mergetwohashes.htm
http://simohayha.javaeye.com/blog/151947
]]>
涓嬭澆鍦板潃:
http://www.dbank.com/download.action?k=8004b8cb15a44b28ab630551eb7658df
or
http://www.uushare.com/filedownload?user=fl1429&id=2018924
涓嬭澆鍚?瀹夎涓涓猠xe鏂囦歡鍜屼竴涓猤em鏂囦歡
one : 鐐瑰嚮exe瀹夎
two:
gem install rmagick.gem
three:
涓嶈鐨勮┍閲嶆柊璧蜂笅闆昏叇錛屽樋鍢匡綖
ref:
http://www.opensourceconnections.com/2007/10/06/installing-rmagick-on-windows-using-ruby-186/
浠巖uby-lang涓嬭澆ruby1.8.6鐨刬nstaller,鐐瑰嚮瀹夎
two:
gem install rails -v=2.1.0
鍒ゆ柇鎴愬姛:
ruby 鈥搗
gem 鈥搗
rails -v
鐜錛?/font>ubuntu 8.10 en version
瀹夎ror鐗堟湰 錛?ruby 1.8.7 + rails 2.1.0
1,瀹夎ruby
sudo apt-get ruby
瀹夎緇撴潫鍚?鍙互鐢?/font>ruby -v 鏌ョ湅瀹夎緇撴灉
feng@feng:~$ ruby -v
ruby 1.8.7 (2008-08-11 patchlevel 72) [i486-linux]
2錛屽畨瑁?/font>rubygems
sudo apt-get rubygems
瀹夎緇撴潫鍚庡彲浠ョ敤 gem -v 鏌ョ湅瀹夎緇撴灉
feng@feng:~$ gem -v
1.3.4
3錛屽畨瑁呭畬rubygems鍚庡彲鑳戒笉鏄渶鏂扮増錛岄渶瑕佹洿鏂頒竴涓嬶紝鏇存柊鐨勬柟娉?/font>
$ sudo gem install rubygems-update
4錛屽畨瑁?/font>rails
sudo gem install -v=2.1.0 rails
瀹夎緇撴潫鍚庯紝鍙互鐢?rails -v 鏌ョ湅涓嬪畨瑁呯粨鏋?/font>
feng@feng:~$ rails -v
Rails 2.1.0
鍒氬紑濮嬫垜鐢ㄧ殑鏄?/font>sudo gem install rails,瀹夎鐨勬槸鏈鏂扮増錛屼絾鏄拰ruby1.8.7涓嶅崗璋冿紝鏈鍚庡張鍗鎬簡rails錛岄噸鏂拌浜?/font>rails 2.1.0錛屽嵏杞芥柟寮忓涓嬶細
gem list 鍒楀嚭鎵鏈?/font>gem鍖咃紝
feng@feng:~$ gem list
*** LOCAL GEMS ***
actionmailer (2.1.0)
actionpack (2.1.0)
activerecord (2.1.0)
activeresource (2.1.0)
activesupport (2.1.0)
calendar_date_select (1.15)
rails (2.1.0)
rake (0.8.7)
rmagick (2.9.2)
鐒跺悗閫愪竴鍒犻櫎
sudo gem uninstall rails
sudo gem uninstall actionmailer
銆?/font>
銆?/font>
銆?/font>
ref錛?/font>
http://hi.baidu.com/pepsichan/blog/item/dc1e030a58c9021795ca6bde.html
http://hi.baidu.com/pepsichan/blog/item/8cf53dec6957432f62d09f1c.html
Magick::AspectGeometry
灝眔k浜?br />
鎴戠殑demo錛?br />
api錛?br /> http://www.simplesystems.org/RMagick/doc/struct.html#Geometry