我有haml中的下一个代码,显示错误:显示/home/ubuntu/workspace/app/views/layouts/application.html.haml第24行引发:非法嵌套:内容无法解决两者都与%a在同一行上给出并嵌套在其中。
第24行是 = current_user.name haml代码有什么问题?
!!!
%html
%head
%title Chat
= stylesheet_link_tag
= javascript_include_tag
= csrf_meta_tags
%body
%div.navbar.navbar-default.navbar-static-top
.container
.navbar-header
= link_to 'Chat', root_path, class: 'navbar-brand'
.navbar
%ul.nav.navbar-nav
%li
= link_to 'Home', root_path
%ul.nav.navbar-nav.pull-right
- if user_signed_in?
%li.dropdown
%a.dropdown-toggle {"data-toggle": "dropdown", href: "#"}
= current_user.name
%ul.dropdown-menu {role: "menu">
%li
= link_to 'Profile', edit_user_registration_path
%li
= link_to 'Log out', destroy_user_session_path, method: :delete
- else
%li
= link_to 'Log In', new_user_session_path
%li
= link_to 'Sign Up', new_user_registration_path
.container
= flash.each do |key, value|
%div.alert.alert-"#{key}"
= value
= yield
%footer
%p Copyright © #{Time.now.year}
答案 0 :(得分:1)
尝试以下方法:
$(document).ready(function () { //call function here })
或者,您应调用Rails的%a.dropdown-toggle{data-toggle: "dropdown", href: "#"} = current_user.name
帮助程序以使其正常运行:
link_to
与%a在同一行给出并嵌套在其中
错误基本上意味着HAML会在您的= link_to current_user.name, "#", data: {toggle: "dropdown"}, class: "dropdown-toggle"
和.dropdown-toggle
之间处理您的空间,作为链接标记的“内容”。
当您在下面的行中声明{
时,对于在链接的“内容”中显示哪一个感到困惑
关于您的错误,以下是我如何格式化页面:
= current_user
一些指示:
您无需声明!!!
%html
%head
%title Chat
= stylesheet_link_tag
= javascript_include_tag
= csrf_meta_tags
%body
.navbar.navbar-default.navbar-static-top
.container
.navbar-header
= link_to 'Chat', root_path, class: 'navbar-brand'
.navbar
%ul.nav.navbar-nav
%li= link_to 'Home', root_path
%ul.nav.navbar-nav.pull-right
- if user_signed_in?
%li.dropdown
= link_to current_user.name, "#", data: {toggle: "dropdown"}, class: "dropdown-toggle"
%ul.dropdown-menu{data-role: "menu"}
%li= link_to 'Profile', edit_user_registration_path
%li= link_to 'Log out', destroy_user_session_path, method: :delete
- else
%li= link_to 'Log In', new_user_session_path
%li= link_to 'Sign Up', new_user_registration_path
.container
= flash.each do |key, value|
.alert.alert-"#{key}" = value
= yield
%footer
%p Copyright © #{Time.now.year}
- 只需使用%div
即可自动创建.css_class
HAML基本上就像一个巨大的div
脚本 - 它以不同的方式处理代码中的每个细微差别。对于内联与嵌套内容尤其如此。
如果您只有一行,则无需嵌套内容:
markdown
如果你有多行,你需要保持初始代码没有空格:
.alert.alert-"#{key}"= value
答案 1 :(得分:1)
将第23行更改为
%a.dropdown-toggle{"data-toggle": "dropdown", href: "#"}