2011-12-12 4 views
0

A mon avis, je rends un partiel.Rails: Template Error "affectation de constante dynamique"

Le nom du partiel est construit par le nom d'une page de produit.

<%= render :partial => "product_pages/" + selected.headline %> 

Dans le cas de test, le titre est "électronique".

Je aussi essayé:

<%= render :partial => "product_pages/electronics" 

Pour tester la vue partielle ressemble à ceci:

<p>Test</p> 

Maintenant, j'obtiens cette erreur je ne comprends pas:

ActionView::Template::Error (/var/www/*****/app/views/product_pages/_Elektro 
nik.html.erb:1: dynamic constant assignment 
...r = @output_buffer;Elektronik = local_assigns[:Elektronik];;... 
...        ^): 
    1: <p>Test</p> 
    app/views/pages/_content.html.erb:13:in `_app_views_pages__content_html_erb__4 
0580468132849538_266915680_1201196437383914942' 
    app/views/pages/index.html.erb:3:in `_app_views_pages_index_html_erb__43007964 
38685262523_267219620_562910368159856764' 
+0

Elektronik est-il mentionné quelque part dans votre vue? –

+0

Voir aussi [affectation de constante dynamique] (http://stackoverflow.com/questions/6712298/dynamic-constant-assignment). –

Répondre

0

Vous besoin de downcase votre titre:

selected.headline.downcase 

C'est parce que vous allez être rendu une partie comme ceci: product_pages/Elektronik, et lorsque vous appelez render :partial il va tenter de définir une variable locale qui a le même nom que partielle, ce qui est pourquoi vous En obtenant cette erreur: le code n'est pas définissant une variable locale mais définit en fait une constante. Si vous downcasedowncase, il va définir une variable locale plutôt que cette constante.

+0

bien sûr! Je n'étais juste pas assez intelligent pour le voir dans le journal des erreurs. – JAkk

Questions connexes