2010-02-25 2 views
0

Я новичок в этом, и у меня возникли проблемы с поиском правильного способа выразить это в Ruby. И я не знаю, отличается ли Ruby API в SketchUp. Но для этого я и пытаюсь это использовать.Каков правильный способ выражения этого утверждения в Ruby?

def self.initialize_job_info 
    return{ 
     'salesperson' => ' = $pg_settings['salespersons'[['salesperson']['id']]] if ('on' = $pg_settings['salespersons'[['salesperson']['defsales']]])' 

Это то, что я в основном пытаюсь сделать:

Эта часть кода работает, как это должно

def self.initialize_job_info 
    return{ 
     'salesperson' => '' 

Он устанавливает начальное значение пустая форма по job_info ['salesperson'] 'to' ', если не найдено ранее существовавшего значения.

Итак, есть значение, которое я хочу разместить в хеш, которое передается из $ pg_settings.

Значение Я хочу есть, и я надеюсь, что это имеет смысл, значение этого специфического «ид»

$pg_settings['salespersons'] {//which is a list of 'salesperson' 
    <salesperson> id="561" name="name" phone="phone number" defsales="on" email="email" </salesperson> 

если (defsales == «на»), то «продавец» => «значение = "id" '

Имеет ли это смысл?

Я вытягиваю свои волосы, поэтому любая помощь, которую вы можете оказать на это, будет отличной.

+0

Я не понимаю. Что вы на самом деле пытаетесь сделать? – Geo

ответ

0

Я понял.

Вот рабочий код

def self.initialize_job_info 
    return{ 
     'salesperson' => self.default, 
    } 
end 

def self .default 
    salespersons = $pg_settings['salespersons'] 
    salespersons.each do |salesperson| 

    if (salesperson['defsales'] == 'on') 
     return salesperson['id'] 
     end 
    end 
end 

Похоже, я был далеко ....... лол

0

, если эти имена не внутри кавычек переменные, которые вы хотите получить значения из него, вероятно, следует:

'salesperson' => " = $pg_settings[#{salespersons}[[#{salesperson}][#{id}]]] if (#{on} = $pg_settings[#{salespersons}[[#{salesperson}][#{defsales}]]])" 

но, как сказал Geo, более подробную информацию о фактической цели/намерения помогли бы

BTW, что строи тис называется строка интерполяция (http://en.wikibooks.org/wiki/Ruby_Programming/Syntax/Literals#Interpolation)

0

Если вы хотите интерполировать строки, как включить их значение в строке, а затем, возможно, это примеры могут помочь вам:

a = "a string" 
b = "this is" 
c = "#{b} #{a}" 

В приведенном выше примере c будет иметь значение: this is a string. Кроме того, при интерполяции допустимый код Ruby принимается. Таким образом, это нормально тоже:

c = "#{ b.sub("this","") } #{a}" 

И в этом случае, c будет иметь значение is a string. Итак, если вам нужно что-то интерполировать, сначала подумайте о том, как вы это сделаете, используя обычный код, а затем просто добавьте #{} вокруг него.

Смежные вопросы