Как передать HTML из Helper в ERB? - PullRequest
0 голосов
/ 02 ноября 2010

В моем файле .html.erb есть следующий код, который работает так, как ожидалось:

<% if !current_user %>
  <%= link_to "Sign in (or up)", '/login', :class => "login_button round" %>
<% else %>
  <%= link_to "Sign out", '/logout', :class => "login_button round" %>
<% end if %>

Но я подумал, что было бы неплохо вставить условную логику в помощник и очистить файл .html.erb. У меня сейчас есть следующее, но оно не работает. Я .html.erb:

<%= sign_in_out_button %>

А в помощнике:

def sign_in_out_button
  out = ''
  if current_user
    out << link_to('Sign out', '/logout', :class => 'login_button round')
  else
    out << link_to('Sign in (or up)', '/login', :class => 'login_button round')
  end
end

То, что я получаю, проверяя исходный код браузера, это именно то, что я ищу, но за исключением того, что оно отображается, а не интерпретируется браузером как код. Есть идеи, как решить эту проблему?

1 Ответ

1 голос
/ 02 ноября 2010

В рельсах 3 выходной код по умолчанию экранирован.Вы можете сделать это:

def sign_in_out_button
  out = ''
  if current_user
    out << link_to('Sign out', '/logout', :class => 'login_button round')
  else
    out << link_to('Sign in (or up)', '/login', :class => 'login_button round')
  end
  out.html_safe
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...