2013-08-27 9 views
6

मुझे Sinatra प्रोजेक्ट में Slim टेम्पलेट इंजन के साथ कोई समस्या है। मार्ग ट्रिगर होने पर मेरे पास एक संपादन फ़ॉर्म भरना होगा। HTML select option के साथ कोई समस्या है। जब संपादन फ़ॉर्म लोड होता है तो मुझे ऐसा कुछ चाहिए। ध्यान दें कि Mrs. विकल्प selected है:किसी विशेषता के अस्तित्व को नियंत्रित करना

<select name="person[title]" id="person[title]"> 
    <option value="Mr.">Mr.</option> 
    <option value="Mrs." selected>Mrs.</option> 
</select> 

मैंने कोशिश की:

option[value="Mrs." "#{person.title == :mrs ? 'selected' : ''}"] 

अपवाद एक विशेषता त्रुटि के बारे में था। तब मैं कुछ इस तरह की कोशिश की:

option[value="Mrs." selected="#{person.title == :mrs ? true : false}"] 

लेकिन फिर उत्पादन कुछ इस तरह था:

<option value"Mrs." selected="false">Mrs.</option> 

मैं स्ट्रिंग "false"true के रूप में व्याख्या की है लगता है। वह असफल रहा। मैंने राउंड ब्रैकेट के साथ कुछ संयोजनों की कोशिश की लेकिन इसे काम नहीं कर सका।

मैं Slim में एक select सूची में एक option की selected विशेषता कैसे सेट कर सकता है?

उत्तर

8

एक विशेषता के लिए, आप = के बाद गहरे लाल रंग का कोड लिख सकते हैं, लेकिन अगर माणिक कोड उस में रिक्त स्थान है, तो आप गहरे लाल रंग का कोड के आसपास कोष्ठक डाल करने के लिए है:

option[value="1" selected=("selected" if @title=="Mrs.")] "Mrs." 

देखें "रूबी जिम्मेदार बताते हैं" यहाँ : http://rdoc.info/gems/slim/frames

कोष्ठक वैकल्पिक हैं, तो आप भी इस तरह यह लिख सकते हैं:

option value="1" selected=("selected" if @title=="Mrs.") "Mrs." 

या, कोष्ठक के बजाय, आप एक अलग सीमांकक का उपयोग कर सकते हैं:

option {value="1" selected=("selected" if @title=="Mrs.")} "Mrs." 

यहाँ यह कुछ के साथ है कोड:

slim.slim:

doctype html 
html 
    head 
    title Slim Examples 
    meta name="keywords" content="template language" 

    body 
    h1 Markup examples 
    p This example shows you how a basic Slim file looks like. 
    select 
     option[value="1" selected=("selected" if @title=="Mr.")] "Mr." 
     option[value="2" selected=("selected" if @title=="Mrs.")] "Mrs." 

रेल के बिना एक स्टैंडअलोन माणिक कार्यक्रम में स्लिम का उपयोग करना:

require 'slim' 

template = Slim::Template.new(
    "slim.slim", 
    pretty: true #pretty print the html 
) 

class Person 
    attr_accessor :title 

    def initialize title 
    @title = title 
    end 
end 

person = Person.new("Mrs.") 
puts template.render(person) 

--output:-- 
<!DOCTYPE html> 
<html> 
    <head> 
    <title> 
     Slim Examples 
    </title> 
    <meta content="template language" name="keywords" /> 
    </head> 
    <body> 
    <h1> 
     Markup examples 
    </h1> 
    <p> 
     This example shows you how a basic Slim file looks like. 
    </p> 
    <select><option value="1">"Mr."</option><option selected="selected" value="2">"Mrs."</option></select> 
    </body> 
</html> 

मैं स्ट्रिंग "गलत" के रूप में व्याख्या की है सच लगता है।

हां। झूठ का मूल्यांकन करने वाली एकमात्र चीजें झूठी खुद और शून्य हैं। कोई भी संख्या (0 सहित), कोई स्ट्रिंग ("" सहित), और किसी भी सरणी ([] सहित), आदि सभी सत्य हैं।

आपकी समस्या से संबंधित नहीं है, लेकिन शायद भविष्य के खोजकर्ता के लिए उपयोगी है ... मुझे लगता है कि स्लिम प्रस्तुत करने के लिए तर्क के रूप में आप जो भी ऑब्जेक्ट पास करते हैं, उसमें आवृत्ति चर दिखता है। इसलिए यदि आप टेम्पलेट के लिए मूल्यों का पूरा समूह प्रदान करना चाहते हैं, तो आप लिख सकते हैं:

require 'slim' 

template = Slim::Template.new(
    "slim.slim", 
    pretty: true #pretty print the html 
) 

class MyVals 
    attr_accessor :count, :title, :animals 

    def initialize count, title, animals 
    @count = count 
    @title = title 
    @animals = animals 
    end 
end 

vals = MyVals.new(4, "Sir James III", %w[ squirrel, monkey, cobra ]) 
puts template.render(vals) 

पतला।स्लिम:

doctype html 
html 
    head 
    title Slim Examples 
    meta name="keywords" content="template language" 

    body 
    p [email protected] 
    p [email protected] 
    p [email protected][-1] 

न तो ओपनस्ट्रक्चर और न ही निर्माण के साथ काम का निर्माण() हालांकि वे प्राकृतिक उम्मीदवारों की तरह लगते हैं।

संबंधित मुद्दे