Haml的if else嵌套

3
你怎样才能避免在 .text.error 和 .text 后重复代码呢?

     -if f.object.errors.any?
      .text.error 
        = f.label :email 
        = f.text_field :email
        %p#foo= "Escriba el e-mail"
        = render 'shared/error_messages', :object => f.object, :param => :email
    -else
      .text
        = f.label :email 
        = f.text_field :email
        %p#foo= "Escriba el e-mail"
        = render 'shared/error_messages', :object => f.object, :param => :email

    -if f.object.errors.any?
      .text.error
        = f.label :password
        = f.password_field :password
        = render 'shared/error_messages', :object => f.object, :param => :password
    -else
      .text.error
        = f.label :password
        = f.password_field :password
        = render 'shared/error_messages', :object => f.object, :param => :password   

1个回答

5

尝试

-["email", "password"].each do |param|
  .text{:class => f.object.errors.any? ? "error" : nil}
    = f.label param.to_sym 
    = f.text_field param.to_sym
    %p#foo= "Escriba el #{param}"
    = render 'shared/error_messages', :object => f.object, :param => param.to_sym

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接