2010-08-12 9 views
0

dans un rail 3 projet J'ai un script:Rails 3.0.0rc - ActiveRecord :: Base.class_name

<%= javascript_tag do -%> 
    var columns = new Array(); 
    <% for table in @tables -%> 
    <% for column in ActiveRecord::Base.const_get(ActiveRecord::Base.class_name(table)).columns -%> 
     columns.push(new Array('<%= table %>', '<%= column.name %>')); 
    <% end -%> 
    <% end -%> 
    function mergeTableSelected() { 
    var o = $('select#merge_table option:selected'); 
    $('th select option').remove(); 
    $('th select').each(function(i, select) { 
     select.options.add(new Option()); 
     $.each(columns, function(j, column) { 
     if (o.text() == column[0]) { 
      select.options.add(new Option(column[1])); 
     } 
     }); 
    }); 
    } 
<% end -%> 

Après la mise à jour de 3.0.0.beta4 à 3.0.0.rc je reçois:

undefined method `class_name' for ActiveRecord::Base:Class 

Que faire maintenant?

Répondre

2

Je résolu par un problème:

... 
<% klass = table.to_s.classify %> 
<% for column in ActiveRecord::Base.const_get("#{klass}").columns %> 
... 
1

Ils retiré de Rails 3RC:
http://github.com/rails/rails/commit/735a4db6854e73e871e6b01ec003f0670cc5ee14

Je ne sais pas pourquoi, mais vous pouvez probablement utiliser une approche différente dans la vue .. il semble que vous tirez toutes les tables de votre projet, afin vous pouvez transformer la chaîne en une constante et appeler .Columns sur cette constante:

<% @tables.each do |table| %> 
    <% table.classify.constantize.columns.each do |column| %> 
     columns.push(new Array('<%= table %>', '<%= column.name %>')); 
    <% end %> 
    <% end %> 
+0

I Mise à jour d ma solution avec une autre méthode qui peut fonctionner (en fonction de ce que @tables est) sans utiliser les méthodes ActiveRecord :: Base – johnmcaliley

Questions connexes