2016-10-30 2 views
0

Я хотел бы печатать с <% =%>. PS: Следующие работы, но выглядит плохо.Rails печатать пользовательский ввод и тег в то же время

<%= "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 < br> ", а вместо" EVIL ", но это не лучше моего текущего решения.

ответ

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) 
+0

Я имел ту же самую идею, за исключением того, я добавил исключение, если # { вход} отсутствует. Но кроме этого мое решение выглядит одинаково. Я надеялся, что есть лучшее решение. Я буду ждать больше решений, но спасибо за ваш ответ! –