【发布时间】:2009-11-23 13:23:55
【问题描述】:
我有一个多语言管理员(英语和葡萄牙语),需要同时保存两种语言的数据,例如同一表单中的描述 EN 字段和描述 PT 字段。
Globalize2 有一些魔力,我不知道如何保存它。我将在这里发布我的控制器操作,这显然需要一些重构。谢谢各位!
def create
@brand = Brand.create()
@brand.title = params[:title]
@brand.upload_logo(params[:logo]) unless params[:logo].blank?
@brand.order = params[:order]
@brand.priority = params[:priority]
plataforms = Plataform.find(:all, :conditions => ["id IN (?)", params[:plataforms]])
@brand.plataforms = plataforms
params[:pt].each do |k, v|
I18n.locale = :pt
eval "@brand.#{k} = v"
end
params[:en].each do |k, v|
I18n.locale = :en
eval "@brand.#{k} = v"
end
respond_to do |format|
if @brand.save
# if 1 == 1
flash[:notice] = 'Brand was successfully created.'
format.html { redirect_to(@brand) }
format.xml { render :xml => @brand, :status => :created, :location => @brand }
else
format.html { render :action => "new" }
format.xml { render :xml => @brand.errors, :status => :unprocessable_entity }
end
end
end
对不起..我忘了说..我的疑问是保存翻译。这段代码:
params[:pt].each do |k, v|
I18n.locale = :pt
eval "@brand.#{k} = v"
end
params[:en].each do |k, v|
I18n.locale = :en
eval "@brand.#{k} = v"
end
【问题讨论】:
-
我从来没有使用过 globalize 模型翻译,所以我帮不了你太多,但是对用户提交的数据使用 eval 是一个巨大的安全风险。
-
我知道......我只是用来从名为“k”的视图中获取一些字段并输入一个值......为了减少编码......但我真的不知道如何以漂亮的方式解决这个问题..
标签: ruby-on-rails ruby internationalization