Вывод кода из блока Ruby on Rails без закрытия тегов ruby - PullRequest
0 голосов
/ 27 января 2012

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

В настоящее время, когда я делаю блок кода ruby ​​в своем приложении rails и хочу вывести значение, я делаю следующее

<% somearray do | item | %>
    <%= item %>
<% end %>

Для меня это довольно грязно, я знаю, что, исходя из фона PHP, дело не в том, как представить, как кодировать в рельсах, а в многих различных средах. Мне нравится, когда мой код выглядит красиво мне .Очень легко инкапсулировать каждую строку с <%%>, но я бы предпочел, чтобы мой код был моим кодом, а моя разметка - моей разметкой.

Что бы я хотел, но что не нужнот работает, это ....

<%
    somearray do | item |
        whatever item #whatever being puts or similar
    end
%>

Это исключительно для эстетики кода и не для того, что он производит, но для меня, очень долгого времени программиста, это значит много и много временисохраняется при попытке увидеть, где и когда блоки кода начинаются и заканчиваются.

Заранее спасибо,

Jay (c0ld)

Ответы [ 2 ]

1 голос
/ 27 января 2012

Вы можете использовать concat.Начиная с документа :

Предпочтительный метод вывода текста в ваших представлениях - это использование синтаксиса <%= “text” %> eRuby..... Если вам абсолютно необходимо вывести текст в кодовом блоке без вывода (например, <% %>), вы можете использовать метод concat.

Примеры

<%
    concat "hello"
    # is the equivalent of <%= "hello" %>

    if logged_in
      concat "Logged in!"
    else
      concat link_to('login', :action => login)
    end
    # will either display "Logged in!" or a login link
%>
0 голосов
/ 27 января 2012

Как насчет ...

<%= somearray.map {|item| item }.join(" ") %>

PS Конечно, если элемент просто выводит сам себя - он может быть еще короче

...