A ver si alguien me puede ayudar porque no encuentro la manera de
solucionarlo.
Estoy trabajando con una aplicación que utiliza el plugin Globalize.
Tengo una tabla de páginas y una de menús donde hay un permalink que se
genera con la libreria siguiente
def self.use_permalink( attr )
self.class_eval <<-EOF, FILE, LINE
before_save { |r| r.permalink = r.#{attr}.to_url }
EOF
end
end
class String
def to_url
# paso a minusculas y quito caracteres no validos y espacios
result = self.downcase
result.gsub!(/[’"]/, ‘’)
result.gsub!(/W/, ’ ')
result.gsub!(/ +/, ‘-’)
result.gsub!(/(-)$/, ‘’)
result.gsub!(/^(-)/, ‘’)
# devuelvo el resultado
result
end
En la tabla de menús guardo el permalink i el page_id. Cuando alguien va
a alguna opción del menú, la busco con el permalink y luego busco la
página con el page_id (espero explicarme bien)
Cuando quiero acceder a una página en concreto utilizo el siguiente
método:
def section
@menu = Menu.find_by_permalink(params[:id])
@page = Page.find(:first, :conditions =>[‘id = ?’, @menu.page_id])
render :action => ‘page’
end
Si cargo la págin con el idioma por defecto no hay ningún problema, si
la cargo en cualquier otro idioma aparece el siguiente error:
private method `gsub!’ called for {“permalink”=>“homepage”}:Hash
#{RAILS_ROOT}/vendor/plugins/globalize/lib/globalize/localization/db_translate.rb:480:in
fix_conditions' #{RAILS_ROOT}/vendor/plugins/globalize/lib/globalize/localization/db_translate.rb:479:in
each’
#{RAILS_ROOT}/vendor/plugins/globalize/lib/globalize/localization/db_translate.rb:479:in
fix_conditions' #{RAILS_ROOT}/vendor/plugins/globalize_extension/lib/globalize/db_translate_ex.rb:44:in
find_every’
/usr/lib/ruby/gems/1.8/gems/activerecord-1.15.2/lib/active_record/base.rb:991:in
find_initial' /usr/lib/ruby/gems/1.8/gems/activerecord-1.15.2/lib/active_record/base.rb:1205:in
send’
/usr/lib/ruby/gems/1.8/gems/activerecord-1.15.2/lib/active_record/base.rb:1205:in
method_missing' /usr/lib/ruby/gems/1.8/gems/activerecord-1.15.2/lib/active_record/base.rb:1205:in
silence’
/usr/lib/ruby/gems/1.8/gems/activerecord-1.15.2/lib/active_record/base.rb:1205:in
method_missing' #{RAILS_ROOT}/app/controllers/index_controller.rb:8:in
section’
Alguna idea??