苗条的变量 rails
variables in slim rails
我有用 Slim 编写的模板,我想将它与 Ruby 一起使用,但我在 index.slim
中遇到了这些错误。
-content_panel_file = '_partials/content_panel_5'
-content_box_file = '_partials/content_box_2'
- menu_file = '_partials/menu_side'
= render '_partials/template'
在template.slim中:
.content-i
.content-box
== Slim::Template.new(content_box_file).render(Object.new, 'template_vars' => template_vars)
但它给出了这个错误:
undefined local variable or method `content_box_file' for #<#<Class:0x00000003b28308>:0x00000003b685c0>
Did you mean? content_for
原因是您的 content_box_file
在您的部分文件中不存在,您正试图访问不在当前 "scope" 中的局部变量。
尝试在渲染方法中将 content_box_file
变量作为本地变量传递:
= render partial: '_partials/template', locals: { content_box_file: content_box_file }
请注意,您需要使用 render partial: ...
。
完整的工作流程:
# 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
我有用 Slim 编写的模板,我想将它与 Ruby 一起使用,但我在 index.slim
中遇到了这些错误。
-content_panel_file = '_partials/content_panel_5'
-content_box_file = '_partials/content_box_2'
- menu_file = '_partials/menu_side'
= render '_partials/template'
在template.slim中:
.content-i
.content-box
== Slim::Template.new(content_box_file).render(Object.new, 'template_vars' => template_vars)
但它给出了这个错误:
undefined local variable or method `content_box_file' for #<#<Class:0x00000003b28308>:0x00000003b685c0>
Did you mean? content_for
原因是您的 content_box_file
在您的部分文件中不存在,您正试图访问不在当前 "scope" 中的局部变量。
尝试在渲染方法中将 content_box_file
变量作为本地变量传递:
= render partial: '_partials/template', locals: { content_box_file: content_box_file }
请注意,您需要使用 render partial: ...
。
完整的工作流程:
# 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