Google自訂搜尋

目前日期文章:200902 (2)

瀏覽方式: 標題列表 簡短摘要

先來說說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

 

hechian 發表在 痞客邦 留言(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就這樣

有問題歡迎一起討論:)

hechian 發表在 痞客邦 留言(0) 人氣()