Google自訂搜尋

先來說說Rails 2.3中即將問世的Object#try吧

有時候我們不知道某個物件是否能夠回應某個呼叫,我們可以用object.respond_to?(method)來判斷傳回的是true還是false,因此我們可以藉由這個特性來達到我們要的目的:

f = Factory.first
puts f.category.try(:name)

只要有辦法回應就會直接呼叫name這個member function;但是別忘記了,現在還是Rails 2.2 ...

所以,我們可以自己寫一個try來用,先在Rails Project Root底下的lib新增一個try.rb,然後再config/environment.rb中新增一行:

require 'try' if Rails.version =~ /^2\.2/

這代表著如果不是2.2的版本就不要引入,當然如果你是其他版本的可以自己弄一下

然後,try.rb內寫:

class Object
  def try(method)
    return send(method) if respond_to?(method)
  end
end

存檔後重新啟動你的Rails Server即可

使用方式可參考:http://www.javaeye.com/topic/169001

這種方法有一些缺陷,所以你可以去看看要怎樣處理

 

再來說說Model.to_json吧

Rails可以用.to_json將你的資料轉成JSON輸出,不過你會發現為什麼產生的格式會有點不一樣:

Factory.all.to_json #=> [{"factory": {:.....}]

到底要怎樣才能把Model Name給隱藏呢?其實只要在你的Model內加上一段程式碼就好:

class Factory < ActiveRecord::Base
  self.include_root_in_json = false
end

這樣就能關閉了~

而且,.to_json不只可以回傳attributes,也能回傳自己寫的methods哦:

Factory.all.to_json(:methods => [:href, :src]) #=> 這樣回傳的JSON就會有{"href": '...', "src": '...'}了

如果說,不想要回傳任何一個attributes只想回傳methods該怎樣做呢?

Factory.all.to_json(:only => [], :methods => :href) #=> 傳空的陣列給:only就OK啦!

 

Person.new("CFC").say("Happy Valentines Day").to("You")
#=> CFC said Happy Valentines Day to You

Rails Fun~

下次再見啦XD

 

Posted by hechian at 痞客邦 PIXNET Guestbook(2) 人氣()

一點點小日記,沒啥好看的:P

 

Rails的ActiveSupport::Multibytes中的Chars class會丟回Enumerable::Enumerator,所以"中文".chars.size會出錯

Rails 2.2.2使用者請別想轉到Ruby 1.9.1.. 會很累,真的,相信我

我沒摸過merb,所以我不知道Rails 2.3會是個怎麼樣的世界XD

不過,真的蠻喜歡Rails 2.2.2中那些使用resource的方式

請前輩不要來看這篇文章,因為你會很想婊我,我不想要被當成無名之類的東西,嗚嗚

 

表單使用方式:

若是使用partial來顯示表單輸入頁面的話,可以讓:partial直接指向變數,這樣就能在樣板內產生一個叫做form的local variable

View:

<% form_for(@resource) do |f| %>
<%= render :partial => f %>
<% end %>

View(_form.html.erb):

<%= form.text_field :name %>

 

重複頁面使用方式:

若是使用partial來顯示資料的話,可以將:partial指向該resource,並且建立一個"_resource.html.erb"(resource代表資源的名稱,如果是Post資源那就是_post.html.erb)的檔案,這樣不必在裡面寫迴圈就能自動產生一個迴圈哦

View:

<%= render :partial => @posts %>

View(_post.html.erb)

<%= post.title %>
<%= post.body %>

 

jQuery中要做到Rails的periodically_call_remote可以用setInterval來做到。

 

大致上,note就這樣

有問題歡迎一起討論:)

Posted by hechian at 痞客邦 PIXNET Guestbook(0) 人氣()

TWSMSR是一個搭配台灣簡訊(http://twsms.com)使用的簡訊傳送Library

TWSMSR的前身SMSender已經停止維護,將直接改由這個名稱與版本重新出發!

網址在:http://github.com/cfc/twsmsr

使用方式:

require 'twsmsr'
t = TWSMSR.new(username, password) # 帳號密碼請自己申請。
resp = t.send(tel, message) # 取得回應,如果resp是負的,表示有錯誤。如果resp大於0則那是Message ID,可以用t.query查詢狀態。
puts t.query # 查詢錯誤訊息
puts t.message_id # 取得Message ID
t.message_id = "123456" # 設定Message ID
puts t.query

 

有任何疑問歡迎寄信或留言,原始碼可上Github查看

Posted by hechian at 痞客邦 PIXNET Guestbook(0) 人氣()

大家應該都知道我又重新入手了Macbook

實在是忘不了那種感覺啊!

而且XCode + Interface Builder根本就是絕配!!

用Ruby寫OSX程式也不會覺得討厭,所以..

 

Leopard中內建了Ruby/Rails

請記得移除並且自己編譯安裝Ruby

然後在編譯Ruby時記得:

./configure --enable-shared --enable-pthread

這樣才能另外去編譯Ruby Cocoa,不然會炸這個訊息出來:ERROR: ruby must be built as a shared library

至於pthread.. 編譯tk會用到:P

就這樣了,只是take a note而已

Posted by hechian at 痞客邦 PIXNET Guestbook(0) 人氣()

直接貼Code好不好? 噗!

Controller:

def uploading
    files = []
    for i in 1..session[:files].to_i
      next if  params[:gallery]["file_#{i}".to_sym].to_s.blank?
      files << Gallery.create(:file => params[:gallery]["file_#{i}".to_sym]).id.to_s
    end
    redirect_to :action => "images", :files => files.join("_")
  end
 
  def new_upload_field
    session[:files]+=1
    render :update do |page|
      page.insert_html :after, "file_fields", file_column_field("gallery", "file_#{session[:files]}") + "<br />"
    end
  end

 

View:

<%= javascript_include_tag :defaults %>
<% form_for(Gallery.new, :url => {:action => "uploading"}, :html => {:multipart => true}) do |f| -%>
    <div id="file_fields">
        <%= file_column_field("gallery", "file_#{session[:files]}")%><%= link_to_remote("Add new", :url => {:action => "new_upload_field"}) %>
    </div>
  <%= f.submit("Upload") %>
<% end %>

 

解說:

用RJS產生上傳欄位,然後每次新增一個都更新一次檔案數目

接著跑迴圈儲存物件就好了

Posted by hechian at 痞客邦 PIXNET Guestbook(2) 人氣()

  • Dec 04 Thu 2008 20:20
  • Sticky 近況

最近發生了很多事情,從我上大學到現在:)

之前的事情也就算了,反正都過去了,若真的是他也能幫助到他的話我也就睜一隻眼閉一隻眼

在高雄市找到一間公司,現在專職Web開發,原本要寫php的,被我要求用Rails開發

也還好用Rails,我才沒吐血死在該公司=_=

慢慢的,也將生活回到正軌(或許吧?)

之前那間公司退下來的資訊人員,從被資遣到十月,這段時間一直在修養,你看看你們害人多深就好!

我從三月離開到現在還心有餘悸!聽說你們公司內大家都自願辭職是吧?以為你們發薪水就是老大?

現在可好!你們除了騙騙新進員工外,根本沒有多少資深成員在公司,我看你們哪時候倒閉!

 

有點灰心,原本想幫助班上同學,特地開了個論壇卻發現沒多少人願意看

收掉了,現在我也不打算繼續幫你們,要就自己想辦法或者抽時間將問題丟給我,不然你們就求神拜佛吧!!

荏秋說得對,是我太天真了,還以為這樣做會有人願意加油,可是還是沒有

你們加油吧,時間到了我也會走;)

 

跟她越來越好,只不過結婚這事可能真的得往後延了:(

能夠在這個時候找到一個真正愛的人很不錯,至少我不會有太多的後顧之憂

縱使生活很難過,有妳的陪伴與支持我還是能咬牙撐過來!

願天保佑我們可以順利完成夢想吧:)

 

網站構想慢慢出來了,可我還有多少時間可以做呢?

或許我很懶惰吧?可是我還是得鞭策自己,好好加油!

希望這個網站可以讓有需要被幫助的人獲得幫助,也是讓我可以安慰自己的地方

不要再讓我看到醜惡的心

 

有點厭倦.. 討厭這樣的生活

或許我可以笑笑的帶過,可是我的身體可笑不出來.. 很累,很需要救助,可是我還是得咬牙撐住

你們,很幸福!

請好好珍惜:)

Posted by hechian at 痞客邦 PIXNET Guestbook(3) 人氣()