2013-01-15 29 views
0

我有這個想法,我想要「登錄」,當user_signed_in?爲真,但當user_signed_in?爲false時,我的網頁的上角會顯示,但我希望它只是簡單地將「登錄」。if user_signed_in?放置一些文本 - 設計

user_signed_in?是Devise的助手方法。我認爲。

我該如何做這項工作。我試過這個:

<%= if user_signed_in? => true puts "Logged In" else puts "Login" %> 
<% end %> 
<% end %> 

雖然這不起作用。有任何想法嗎 ?

+0

歡迎來到StackOverflow!我希望我的回答能幫助你。如果確實如此,請接受它(點擊複選標記)!如果沒有,請通過編輯問題讓我知道您仍然感到困惑,我很樂意提供幫助。 – Eric

回答

5

您應該多看看Ruby語法(例如,here)。試試這個:

<% if user_signed_in? %> 
    Logged In 
<% else %> 
    <%= link_to 'Login', ... %> # substitute the ... for whatever path goes to login 
<% end %> 

注意,當嵌入紅寶石實際上是將被瀏覽器渲染返回內容<%=部件僅用於(又名轉換爲HTML)。由於您示例中的所有嵌入式ruby都只是控制流,因此不要使用=,因爲瀏覽器實際上不會看到任何內容。然而,link_to方法返回一個鏈接,它是實際呈現的內容,所以我們需要=。

還要注意,由於這是一個視圖文件 - 因此基本上是一個增強的html文件 - 您不需要像「登錄」這樣的原始內容的「放入」。實際上,puts不會將內容帶到瀏覽器,而是發送到STDOUT在Rails應用程序中的任何位置(記錄器?不確定)

+0

我會試試看,謝謝;)我會看看控制流示例zetcode thingy。我會回來告訴你它是否有效 – MarcusTheBuilder

+0

祝你好運!由於您正在編寫Ruby,Rails增強的Ruby和html/embedded Ruby,所以Rails語法可能會變得複雜,因此它可能會成爲初學者。堅持下去,看看網上提供的衆多優秀教程(和StackOverflow),你會得到它的竅門。 – Eric

+0

@MarcusTheBuilder:你可以在https://github.com/plataformatec/devise#controller-filters-and-helpers – Mailo

相關問題