Ruby / Rails - ошибка с неопределенным соединением метода - PullRequest
0 голосов
/ 23 декабря 2011

Я пытаюсь перебрать и сопоставить следующую строку:

@custom_channels = { cnn: 2, abc: 90 }

Затем я хочу иметь возможность проверять / сопоставлять друг с другом и возвращать номер канала (например, 90):

listen_for /channel to (#{@custom_channels.join('|')})/i do |name|
    change_channel @custom_channels[name.downcase]
end

Я получаю следующую ошибку:

scraper.rb:5:in `<main>': undefined method `join' for {:cnn=>2, :abc=>90}:Hash (NoMethodError)

Ответы [ 2 ]

1 голос
/ 23 декабря 2011

Если я понимаю, что вы просите:

@custom_channels = { cnn: 2, abc: 90 }

channel_names = @custom_channels.keys.map(&:to_s)

listen_for /channel to (#{Regexp.union(channel_names)})/i do |name|
    change_channel @custom_channels[name.to_sym]
end
1 голос
/ 23 декабря 2011

Попробуйте это:

1.9.3p0 :007 >   channels = {:cnn=>2, :abc=>90}
 => {:cnn=>2, :abc=>90} 
1.9.3p0 :008 > channels.keys
 => [:cnn, :abc] 
1.9.3p0 :009 > channels.keys.each do |name|
1.9.3p0 :010 >     puts channels[name]
1.9.3p0 :011?>   end
2
90
 => [:cnn, :abc] 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...