2011-02-10 32 views
0

我试图与轨道应用程序混为一谈,学习正确的做事方式,我得到了一个很好的开始,但现在这个东西在困扰着我。它漂亮的化妆品,但它让我感到不可思议。Rails应用程序产生额外的输出

我已经使这个会话控制器和会话帮助器照顾登录和注销,我相信这工作正常(还没有真正测试过),但是当我想要使用如果!signed_in ?,我在我的视图中获得额外的输出(在使用haml的情况下),下面是我相信所有代码都会生成这个额外的输出。

sessions_helper.rb:

def get_current_user 
    @current_user ||= false 
end 

def signed_in? 
    !get_current_user.nil? 
end 

部分:_menu.html.haml(IM仍然在学习,使这个外观红宝石ISK)

%nav 
    #userbox 
    =if signed_in? 
     =link_to 'Create User', :signup 
     | 
     =link_to 'Log In', :signin 
    =if !signed_in? 
     =link_to "My profile", :root 
     | 
     =link_to 'Log Out', :signout 
    %ul 
    %li= link_to 'About', :about 
    %li= link_to 'Concept', :concept 
    %li= link_to 'Home', :root 

这与生成以下HTML结束:

<nav> 
    <div id='userbox'> 
    <a href="/signup">Create User</a> 
    | 
    <a href="/signin">Log In</a> 
    2 

    </div> 
    <ul> 
    <li><a href="/about">About</a></li> 
    <li><a href="/concept">Concept</a></li> 
    <li><a href="/">Home</a></li> 
    </ul> 
</nav> 

这里的问题是生成的额外数字2。我如何删除它?

+0

你打印出你如果那么结果。使用 - 而不是=在你的if语句 – corroded 2011-02-10 12:21:40

+0

之后` - 如果有东西`而不是` - 如果!东西`你可以' - 其他'。这是一种Ruby方式来编写条件:) – 2011-02-10 14:22:52

回答

1

尝试使用 - 而不是在= Ruby代码谁不渲染代码:

%nav 
    #userbox 
    - if signed_in? 
     =link_to 'Create User', :signup 
     | 
     =link_to 'Log In', :signin 
    - if !signed_in? 
     =link_to "My profile", :root 
     | 
     =link_to 'Log Out', :signout 
    %ul 
    %li= link_to 'About', :about 
    %li= link_to 'Concept', :concept 
    %li= link_to 'Home', :root 

在这里看到运行Ruby代码的文档:http://haml-lang.com/docs/yardoc/file.HAML_REFERENCE.html#running_ruby_

相关问题