我有铁路助手(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}}
,但我找不到在帮助程序中执行此操作的方法。
答案 0 :(得分:1)
我认为最简单的方法是为hs_if中的关闭if标记(即hs_endif)和删除{{/ if}}部分引入单独的方法。所以你可以这样写:
= hs_if :current_user do
Hello, {{ current_user/name }}!
= hs_else do
= link_to 'Sign In', sign_in_path
= hs_endif
您需要输入更多内容,但它可能会使代码更清晰一些。当然有一种危险,你忘记关闭你的if语句,但你还是会进行单元测试来捕获它,对吗?
答案 1 :(得分:0)
我认为检查 current_user 的条件表达式可以在helper中使用(在胡子模板之外):
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