我一直在關注在Rails 3.1中實現身份驗證的Railscast#270發現Rails Cast #270。我想要做的是在我的模板中有能力在用戶登錄時顯示不同的鏈接。它應該看起來像這樣。在Rails中登錄時顯示不同的文本
If user logged in
Display link to Profile
Display logout
If user logged out
Display link to register
Display link to login
我想我可以找出鏈接從theRailsTutorial不同的地方,但我卡在如何判斷用戶在簽署與否。
使用軌道教程中,我發現這個片段
<% if signed_in? %>
<li><%= link_to "Profile", current_user %> sfsdfsdf</li>
<% end %>
,當我把我的會議輔助下不工作:
def signed_in?
[email protected]_user.nil?
end
你將如何使這項工作?
@current_user和current_user是同一件事嗎?如果這是普通的ruby,他們不會,但Rails是否奇蹟般地做了一些事情,所以@ current_user在應用程序控制器中定義,然後通過current_user在視圖中訪問它?這是一個共同的軌道模式? –
@NoahClark,'@ current_user'和'current_user'不是一回事。一個在實例變量中,另一個是一個方法。 「@ current_user」是在名爲'current_user'(位於application_controller.rb)中的方法中設置的。如果您將方法的名稱更改爲「def current_foo」,那麼您將使用它來檢查「@ current_user」。我們稱之爲方法'current_user'爲方便 – stephenmurdoch
噢,好吧。這很有道理。謝謝。我仍然對這種方法的想法感到困惑,因爲這種方法最終沒有找到對方。我會明白的! –