我正在實現一個分佈式應用程序,服務器與rails和移動客戶端在目標c(iPhone)中。爲了實現國際化,我使用joshmh的rails插件'globalize2'。xize/json支持globalize2
但是,事實證明,這個插件在ActiveRecord上調用to_xml或to_json時不會轉換屬性。有誰知道解決方法/補丁?你有什麼想法如何解決這個問題,在哪裏改變globalize2?
使用: 的Rails 2.3.5 globalize2:從2010-01-11
我正在實現一個分佈式應用程序,服務器與rails和移動客戶端在目標c(iPhone)中。爲了實現國際化,我使用joshmh的rails插件'globalize2'。xize/json支持globalize2
但是,事實證明,這個插件在ActiveRecord上調用to_xml或to_json時不會轉換屬性。有誰知道解決方法/補丁?你有什麼想法如何解決這個問題,在哪裏改變globalize2?
使用: 的Rails 2.3.5 globalize2:從2010-01-11
隨着Globalize2(以及model_translations以及)模型中的翻譯屬性不是一個真正的屬性,但是一種方法。因此,所以當你執行to_json方法,你可以使用:方法,如里斯建議,但在一個簡單的方法:
class Post < ActiveRecord::Base
attr_accessible :title, :text
translates :title, :text
end
class PostsController < ApplicationController
def index
@posts = Post.all
respond_to do |format|
format.html
format.json { render :json => { :posts => @posts.to_json(:only => :id, :methods => :title) }}
format.js
end
end
end
在這裏,我想只接收帖子ID和標題JSON響應。有關更多信息,請參見Rails API中的to_json(序列化)。
承諾,我發現在GitHub上這個分支:http://github.com/leword/globalize2 但是看起來它是基於舊版本。
我一直在尋找這個自己,但解決了使用我的問題:方法的選擇:
如果你想翻譯的@item一個屬性,你可以使用:
class Item < ActiveRecord::Base
translates :name
def t_name
self.name
end
end
而在你的控制器:
render :text => @item.to_xml(:methods => [ :t_name ])
如果您的API路徑是一樣的東西/en/api/item.xml,你應該得到的英語翻譯在t_name屬性
對於belongs_to的關係:
belongs_to :category
def category_name
self.category.name
end
而在你的控制器:
render :text => @item.to_xml(:methods => [ :category_name ])
你的使用情況可能是不同的。以上是一種解決方法,適用於我。