हमल में अगर-हालत कैसे लिखेंगे?


जवाबों:


131

HAML इंडेंटेशन आधारित है, और पार्सर मुश्किल हो सकता है। आपको Haml में "- end" का उपयोग करने की आवश्यकता नहीं है। इसके बजाय इंडेंटेशन का उपयोग करें। हेमल में, जब भी रूबी मूल्यांकन आदेश के बाद इंडेंटेशन बढ़ाया जाता है, तब एक ब्लॉक शुरू होता है। जब इंडेंट कम हो जाता है तो यह समाप्त हो जाता है।

- if condition
  = something
- else
  = something_else

एक व्यावहारिक उदाहरण

- if current_user
  = link_to 'Logout', logout_path
- else
  = link_to 'Login', login_path

संपादित करें: यदि आप बस का उपयोग करना चाहते हैं तो स्थिति

 - if current_user
  = link_to 'Logout', logout_path

लेकिन केवल अगर संशोधक का उपयोग कैसे करें
थिल्लई नारायणन

अगर मैं जवाब में संपादित किया है तो बस का उपयोग करें। कोई जरूरत नहीं है। इंडेंटेशन बाकी काम करेगा।
बिलश.साह

आपके व्यावहारिक प्रश्न का उत्तर: link_to_if api.rubyonrails.org/classes/ActionView/Helpers/…
Jeffrey LeCours

मैं चाहता था कि अंदर एक और नॉन आउटपुट स्टेटमेंट हो, जैसे - अगर करंट_यूज़र - i = 5 और सोच रहा था कि यह काम क्यों नहीं कर रहा है, हालांकि मैंने इसे इंडेंट किया है! अंत में एहसास हुआ कि - इंडेंट किया जाना है :)
msanjay

orऑपरेटर को शर्त में कैसे जोड़ा जाए ?
जो हनी

18

Haml में दो ऑपरेटरों को रूबी कोड के लिए उपयोग किया जाता है।

  • = का उपयोग रूबी कोड के लिए किया जाता है जिसका मूल्यांकन किया जाता है और दस्तावेज़ में डाला जाता है।

उदाहरण:

= form_for @user  
  • - का उपयोग रूबी कोड के लिए किया जाता है जिसका मूल्यांकन किया जाता है और दस्तावेज़ में सम्मिलित नहीं किया जाता है।

उदाहरण:

- if @user.signed_in?  
  = "Hi"  
- else  
  = "Please sign in!"

1
कृपया ध्यान दें कि आपको वास्तव में ज़रूरत नहीं है =अगर आप सादे स्ट्रिंग को आउटपुट करना चाहते हैं जैसे Hiया Please sign in=केवल रूबी के मूल्यांकन के लिए आवश्यक है, जैसे= "Hi, #{@user.name}"
khustochka

8

एचएमएल में, -एक लाइन को इंगित करने के लिए (डैश) का उपयोग करें रूबी कोड। इसके अलावा, इंडक्शन लेवल ब्लॉक लेवल को दर्शाता है। यदि / अन्यथा कथन के लिए दोनों को मिलाएं।

- if signed_in?
  %li= link_to "Sign out", sign_out_path
- else
  %li= link_to "Sign in", sign_in_path

ईआरबी में निम्नलिखित कोड के समान है:

<% if signed_in? %>
  <li><%= link_to "Sign out", sign_out_path %></li>
<% else %>
  <li><%= link_to "Sign in", sign_in_path %></li>
<% end %>

2

अगर आप अपने टैग के अंदर शर्त रखना चाहते हैं

%section{:class => "#{'new-class' if controller.action_name == 'index'}"}

अपडेट करें

यहाँ एक और भिन्नता है

%nav(class="navbar"){class: content_for?(:navbar_class) ? yield(:navbar_class) : nil}

-2

यहाँ दो लिंक दिए गए हैं:

  1. https://html2haml.herokuapp.com/
  2. http://haml.info/tutorial.html

पहले वाला एक कन्वर्टर है- आप html या एरब स्निपेट्स प्रविष्ट कर सकते हैं और आपको haml मिल सकता है!


2
यह प्रश्न का उत्तर दे सकता है, लेकिन कोड का आवश्यक हिस्सा यहां होना चाहिए
इंजिमम तारिक आईटी सिप
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.