J'ai un administrateur multilingue (pour l'anglais et portugais) qui doit enregistrer les données pour les deux langues en même temps, comme la description champ FR et description champ PT sous la même forme.admin multilingue avec Globalize2
Globalize2 fait un peu de magie et je ne sais pas exactement comment sauver ce. Je vais poster mon action de contrôleur ici, qui a évidemment besoin de refactoring. Merci, les gens!
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
Désolé ... J'ai oublié de le dire .. Mon doute concerne la sauvegarde des traductions. Ce code:
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
I ont jamais utilisé les traductions du modèle Globalize, donc je ne peux pas vous aider beaucoup, mais en utilisant eval avec les données soumises utilisateur est un risque de sécurité énorme . – mtyaka
Je sais ... J'utilise juste pour obtenir des champs de la vue avec le nom « k » et mettre en valeur .. pour moins de codage ... mais je ne sais vraiment pas comment résoudre cela dans une belle façon.. –