如何将HTML从Helper传递给ERB?

时间:2010-11-02 06:34:53

标签: ruby-on-rails-3

我的.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 个答案:

答案 0 :(得分:1)

在rails 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