Rails同时打印用户输入和标签

时间:2016-10-30 17:30:52

标签: ruby-on-rails ruby sanitization

我想用<%=%>进行打印。 PS:以下作品但看起来很糟糕。

<%= "String: #{html_escape @user.input} <br>".html_safe unless @user.input.blank? %>

我知道我能做到

<% unless @user.input.blank? %>
  String: <%= @user.input %><br>
<% end %> 

是否可以编写一个看起来像这样的方法:

def print_if_not_blank (string, input)
  string.insert(html_escape input).html_safe unless  input.blank?
end

printf_if_not_blank "String: #{} <br>", @user.input

我想我总能有一个像“String:EVIL&lt; br&gt;”这样的参数而不是取代“EVIL”,但这并不比我目前的解决方案更好。

1 个答案:

答案 0 :(得分:1)

你可以这样写一个帮手:

def print_if_present(template, input)
  return unless input.present?

  string = template % { input: html_escape(input) }
  string.html_safe
end

您的观点中使用的内容如下:

<%= print_if_present('String: #{input} <br>', @user.input)