Уберите .html.erb вывод - PullRequest
       3

Уберите .html.erb вывод

2 голосов
/ 29 декабря 2010

В макете моего приложения есть ссылка для входа / выхода из системы, которая отображается в зависимости от того, вошли вы в систему или нет:

<% if signed_in? %>
    <%= link_to "Sign out", signout_path, :method => :delete %>
<% else %>
    <%= link_to "Sign in", signin_path %>
<% end %>

Это прекрасно работает, но выглядит неопрятно и многословно.Как вывести соответствующий link_to без такого количества <% ...%> скобок?

Ответы [ 5 ]

5 голосов
/ 29 декабря 2010

Я бы пошел с HAML, но если вы не хотите использовать HAML, вы можете использовать троичный оператор :

<%= signed_in? ? link_to( 'Sign Out', signout_path, :method => :delete ) : link_to( 'Sign In', signin_path ) %>
4 голосов
/ 29 декабря 2010

Использование HAML ;)

- if signed_in?
  = link_to "Sign out", signout_path, :method => :delete
- else
  = link_to "Sign in", signin_path
0 голосов
/ 06 июня 2011

С 2 открытыми и закрытыми скобками вы можете сделать это так:

<%= link_to( "Sign out", signout_path, :method => :delete ) if signed_in? %>
<%= link_to( "Sign in", signin_path) if !signed_in? %>
0 голосов
/ 06 июня 2011

Попробуйте добавить - (тире) к закрывающему тегу, например:

<% 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 (переводы строки и т. Д.)

0 голосов
/ 25 февраля 2011

Вы можете использовать помощник 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
%>

Хотя в API rails они предпочитают синтаксис <%%> ....

...