Изменить вывод рельсов с помощника - PullRequest
1 голос
/ 19 августа 2011

У меня есть помощники по рельсам (hs_if, hs_else):

= hs_if :current_user do
  Hello, {{ current_user/name }}!

  = hs_else do
    = link_to 'Sign In', sign_in_path

... который производит шаблоны рулей:

{{#if current_user}}
  Hello, {{ current_user/name }}!
{{else}}
 <a href="/signin">Sign In</a>
{{/if}}

Как мне сделать {{#if current_user}} ... {{else}} ... {{/if}} без вложенности hs_else в hs_if?

Я думаю, что должен удалить {{/if}} из вывода, но я не могу найти способ сделать это в помощнике.

Ответы [ 2 ]

1 голос
/ 19 августа 2011

Я думаю, что самым простым способом было бы ввести отдельный метод для закрывающего тега if (т.е. hs_endif) и удалить часть {{/ if}} из hs_if.Чтобы вы могли написать что-то вроде этого:

= hs_if :current_user do
  Hello, {{ current_user/name }}!
= hs_else do
  = link_to 'Sign In', sign_in_path
= hs_endif

Вам придется печатать немного больше, но это может сделать код немного понятнее.Конечно, есть опасность, что вы забудете закрыть свое выражение if, но вам все равно понадобятся юнит-тесты, чтобы это уловить, верно?

0 голосов
/ 19 августа 2011

Я думаю, что условное выражение для проверки current_user можно использовать в помощнике (вне шаблона усов):

module M::TemplatesHelper
  def hs_header(&block)
    if current_user
      "Hello, {{ current_user/name }}!"
    else
      link_to('Sign In', sign_in_path)
    end.html_safe
  end
end
...