0

user_signed_in?が true の場合は Web ページの上隅に「ログイン済み」を表示したいという考えがありますが、user_signed_in?が false の場合は単純に「ログイン」だけを表示したいと考えています。

user_signed_in?Deviseのヘルパーメソッドです。おもう。

実際にこれを機能させるにはどうすればよいですか。私はこれを試しました:

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

しかし、これはうまくいきません。何か案は ?

4

1 に答える 1

5

Ruby の構文をもう少し調べる必要があります (ここでは、たとえば)。これを試して:

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

<%= の部分は、埋め込まれたルビーが実際にブラウザーによってレンダリングされる (html に変換される) コンテンツを返す場合にのみ使用されることに注意してください。例に埋め込まれたすべてのルビは制御フローのみであるため、= は使用しないでください。ブラウザーは実際には何も表示しないためです。ただし、link_to メソッドは、実際にレンダリングされたコンテンツであるリンクを返すため、= が必要です。

また、これはビュー ファイルであり、基本的には拡張 html ファイルであるため、「Logged in」などの生のコンテンツには「puts」は必要ありません。実際、puts はコンテンツをブラウザに持ち込むのではなく、Rails アプリの STDOUT がリードする場所に移動します (ロガーかどうかはわかりません)。

于 2013-01-15T10:05:28.860 に答える