0

好的,所以在我的用户模型中,我创建了 get_username 以尝试格式化用户名。

这个想法是能够使用

TheUser.get_username

它会根据用户级别(管理员)正确格式化用户名。作为测试,我创建了这个:

  def get_username 
    fname = '<span style="color:red">John</span>'
    fname
  end

但是,它使用显示的代码逐字显示值。

我怎样才能插入用户名并正确显示

4

2 回答 2

1

您可以使用html_safe.

 def get_username 
   fname = '<span style="color:red">John</span>'
   fname.html_safe
 end

要获取用户名,请使用:

def get_username 
  fname = "<span style='color:red'>#{user_name}</span>"
  fname.html_safe
end

请注意,这是非常糟糕的代码,这不仅滥用了 MVC 的职责分离,还可能引入安全漏洞。

像这样的代码应该在视图中或助手中。

于 2013-02-06T21:44:26.303 回答
0

模型不应该创建 html。你在视图中这样做。我可以建议另一种方法吗:

我想,你有一些变量来存储user_level. 在视图中使用它,如下所示:

# .ERB-File
<span class="<%= user.user_level %>"><%= user.user_name %></span>

现在用 css 格式化它:

# .css-File
span.normal_user {
  color: green;
}
span.admin {
  color: red;
}

PS:我不确定 ERB 语法(我使用 haml)。

于 2013-02-06T22:38:33.690 回答