我确实没有问题,但是我不了解解决方案。
在项目视图(显示)上,我检查查看器是否已连接。如果没有,我会根据要约数量在特定位置渲染横幅。
要约视图(在项目视图中渲染):
- @offers.each_with_index do |offer, index|
- if !user_signed_in? && (@project.published? || @project.pending_attribution?)
- if cta_banner_position(@offers, index)
= render 'projects/cta_banner_guest_presta.html.haml'
cta_banner_position帮助器:
def cta_banner_position(offer, index)
index == 2 || (offer.size == 2 && index == 1) || (offer.size == 1 && index == 0)
end
渲染的横幅:
.row
.col-md-12
.project-cta.p-5.mb-2.text-center
%h5
%strong
blabla
%p.text-muted blabla
%p.m-0
= link_to "Send a quote", "", class: "btn btn-primary px-3", data: { toggle: 'modal', target: '#modal-sign' }, onclick: "ga('send', 'event', 'button', 'Clic', 'Projects signup inoffers');", tabindex: -1
我使用each_with_index来获取位置并设置横幅,这是可行的,但是,如果我已连接,则只有在没有报价的情况下,我才能看到横幅(尽管有!user_signed_in条件)。
我不明白为什么我在连接时有呈现的横幅。 为了解决这个问题,我还必须在标题文件顶部添加“ -if!user_signed_in?”。当我这样做时,如果我已登录,横幅将停止显示。
任何人都可以向我解释为什么他不理会第一个条件,尤其是为什么只有在没有要约时才这样做?
答案 0 :(得分:0)
您的助手什么都不做。如果满足该条件(或者不满足),则只是返回nil。相反,只需返回该长布尔逻辑并拥有一个- if cta_banner_position(@offers, index)
。这将解决@ fl00r提到的缩进问题,因为以前您的cta横幅没有嵌套的内容。
我认为甚至没有在之前调用过该帮助程序,通常需要在Ruby前面加一个-使其在haml中执行