我的应用程序布局有一个登录/注销链接,根据您是否已登录显示:
<% if signed_in? %>
<%= link_to "Sign out", signout_path, :method => :delete %>
<% else %>
<%= link_to "Sign in", signin_path %>
<% end %>
这很好用,但看起来真的很乱,很冗长。如何在没有这么多&lt;%...%&gt;的情况下输出相应的link_to?括号?
答案 0 :(得分:5)
我会使用HAML,但如果您不想使用HAML,则可以使用ternary operator:
<%= signed_in? ? link_to( 'Sign Out', signout_path, :method => :delete ) : link_to( 'Sign In', signin_path ) %>
答案 1 :(得分:4)
使用HAML;)
- if signed_in?
= link_to "Sign out", signout_path, :method => :delete
- else
= link_to "Sign in", signin_path
答案 2 :(得分:0)
您可以使用concat帮助程序:(ActionView :: Helpers :: TextHelper)
<%
if signed_in?
concat link_to( "Sign out", signout_path, :method => :delete )
else
concat link_to( "Sign in", signin_path )
end
%>
虽然在rails api中他们更喜欢&lt; %%&gt;语法....
答案 3 :(得分:0)
尝试在结束标记中添加 - (破折号),如下所示:
<% if signed_in? -%>
<%= link_to "Sign out", signout_path, :method => :delete -%>
<% else -%>
<%= link_to "Sign in", signin_path -%>
<% end -%>
来自:http://www.plexusweb.com/staff/travis/blog/post/117/Rails-inline-ERb-effects-on-HTML-structure
编辑; 我的不好,想到的是格式化HTML输出(换行等)
答案 4 :(得分:0)
使用2个开 - 关括号,您可以这样做:
<%= link_to( "Sign out", signout_path, :method => :delete ) if signed_in? %>
<%= link_to( "Sign in", signin_path) if !signed_in? %>