2017-09-28 3 views
1

J'ai un modèle écrit avec Slim, et je veux l'utiliser avec Ruby mais j'ai ces erreurs dans index.slim.variables dans les rails minces

-content_panel_file = '_partials/content_panel_5' 
    -content_box_file = '_partials/content_box_2' 
    - menu_file = '_partials/menu_side' 
    = render '_partials/template' 

En template.slim:

.content-i 
     .content-box 
      == Slim::Template.new(content_box_file).render(Object.new, 'template_vars' => template_vars) 

mais il a donné cette erreur:

undefined local variable or method `content_box_file' for #<#<Class:0x00000003b28308>:0x00000003b685c0> 
Did you mean? content_for 

Répondre

1

La raison en est votre content_box_file n'existe pas dans votre fichier partiel, vous essayez pour accéder à une variable locale qui n'est pas dans la "portée" actuelle.

Essayez de passer votre variable content_box_file comme un local dans votre render:

= render partial: '_partials/template', locals: { content_box_file: content_box_file } 

Notez que vous devez utiliser render partial: ....

flux de travail complet:

# model/index.html.slim 
- content_box_file = 'app/views/_partials/content_box_2.slim' 
= render partial: '_partials/template', locals: { content_box_file: content_box_file } 

# _partials/_template.html.slim: 
- template_vars = 'Hallo' 
== Slim::Template.new(content_box_file).render(Object.new, template_vars: template_vars) 

# _partials/content_box_2.html.slim: 
== template_vars 
+0

thnx pour votre réponse j'ai essayé mais je m'y suis la même erreur – mar

+0

Vous n'êtes pas spécifier comme une utilisation partielle @mar '= rendu partiel: « ... »' . –