2011-02-10 33 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_

相關問題