2012-12-27 25 views
8

मैं एक लिंक Haml जो इसमैं गतिशील लिंक में HAML का उपयोग कैसे करूं?

=link_to("Last updated on<%[email protected]_data.date_from.month %>",'/member/abc/def?month={Time.now.month}&range=xyz&year={Time.now.year}') 

यह रूबी कोड नहीं ले रही है और यह कि एक स्ट्रिंग के रूप

अंतिम <% पर अद्यतन प्रदर्शित कर रहा है की तरह लग रहा का उपयोग कर बनाने के लिए कोशिश कर रहा हूँ = @ last_data.date_from.month%>

और यूआरएल के साथ-साथ यह समारोह Time.now.month या Time.now.year नहीं ले रही है।

मैं URL में और स्ट्रिंग में रूबी कोड कैसे पास करूं?

= link_to("Last updated on #{@last_data.date_from.month}", "/member/abc/def?month=#{Time.now.month}&range=xyz&year=#{Time.now.year}") 

ध्यान दें कि दूसरी स्ट्रिंग में, यह '" को बदलने के लिए आवश्यक है:

उत्तर

9

आप शायद कुछ इस तरह इस्तेमाल करना चाहिए।

= link_to("/member/abc/def?month=#{Time.now.month}&range=xyz&year=#{Time.now.year}") do 
    Last updated on #{@last_data.date_from.month} 
+1

अरे धन्यवाद पहला भाग काम कर रहा है लेकिन URL में मैं अभी भी हो रही है Time.now .year और Time.now.month –

+0

क्या आपने परिवेश बदल दिया? मेरा मतलब है '-> " –

+0

नहीं, यह उपरोक्त –

7

सब कुछ के बाद Haml में = एक रूबी अभिव्यक्ति है: इसके अलावा, अगर लिंक पाठ लंबे हो रही है, आप कुछ इस तरह उपयोग कर सकते हैं। रूबी एचएएमएल के तरीके से तारों को अलग नहीं करता है, इसका इस तरह के इंटरपोलेशन का अपना तरीका है।

रूबी में, जब आप किसी अन्य स्ट्रिंग के अंदर कुछ चर के स्ट्रिंग मान रखना चाहते हैं, तो आप कर सकते हैं।

"Some string #{Time.now}" 

इसलिए, यह होना चाहिए:

= link_to "Last updated on #{@last_data.date_from.month}", "/member/abc/def?month=#{Time.now.month}&range=xyz&year=#{Time.now.year}" 
0

आसान वाक्य रचना के साथ एक साधारण उदाहरण:

link_to "Profile #{rubycode}", "profile_path(@profile)/#{ruby_code}", class: "active"