undefined method `each' for nil:NilClass

hi rails developers

@templates_array =get_templates "#{get_plugin_root}/public/converter/templates/"

def get_templates(templates_path)     dir = Dir.new(templates_path)     templates = Array.new     dir.each do |d|       templates << File.basename(d.gsub(/\\/, '/'), '.xml') unless (d=~/^\./) #except hidden files       templates.sort!     end     templates   end

in the view page   <%             templateOptions = ""             @templates_array.each do |i|                 templateOptions = templateOptions + "<option value=#{i}>#{i}</option>"             end             %>             <%=select_tag "template", templateOptions %>

I tried to use templates in selection tag but given error like: undefined method `each' for nil:NilClass

Quoting Ibrahim Dogru <rails-mailing-list@andreas-s.net>: [snip]

            @templates_array.each do |i|                 templateOptions = templateOptions + "<option value=#{i}>#{i}</option>"             end

each does not deal gracefully with emtpy arrays or nil. So change to

if @templates_array   @templates_array.each do |i|     templateOptions = templateOptions + "<option value=#{i}>#{i}</option>"   end end

or

@templates_array.each do |i|   templateOptions = templateOptions + "<option value=#{i}>#{i}</option>" end if @templates_array

That last line may need to be

end unless @templates_array.nil?

HTH,   Jeffrey

Jeffrey L. Taylor wrote:

Quoting Ibrahim Dogru <rails-mailing-list@andreas-s.net>: [snip]

            @templates_array.each do |i|                 templateOptions = templateOptions + "<option value=#{i}>#{i}</option>"             end

each does not deal gracefully with emtpy arrays or nil. So change to

if @templates_array   @templates_array.each do |i|     templateOptions = templateOptions + "<option value=#{i}>#{i}</option>"   end end

or

@templates_array.each do |i|   templateOptions = templateOptions + "<option value=#{i}>#{i}</option>" end if @templates_array

That last line may need to be

end unless @templates_array.nil?

HTH,   Jeffrey

Thank you very much for your help Jeffrey. I tried this code in another application, it worked. I don t know why here given this error. there are four files in the folder. the path is right the codes also look right however that I have error. I can not add another option and value either.

Ibrahim Dogru wrote:

Jeffrey L. Taylor wrote:

Quoting Ibrahim Dogru <rails-mailing-list@andreas-s.net>: [snip]

            @templates_array.each do |i|                 templateOptions = templateOptions + "<option value=#{i}>#{i}</option>"             end

each does not deal gracefully with emtpy arrays or nil. So change to

if @templates_array   @templates_array.each do |i|     templateOptions = templateOptions + "<option value=#{i}>#{i}</option>"   end end

or

@templates_array.each do |i|   templateOptions = templateOptions + "<option value=#{i}>#{i}</option>" end if @templates_array

That last line may need to be

end unless @templates_array.nil?

HTH,   Jeffrey

Thank you very much for your help Jeffrey. I tried this code in another application, it worked. I don t know why here given this error. there are four files in the folder. the path is right the codes also look right however that I have error. I can not add another option and value either.

OK I found the problem... I defined the @templates_array in the wrong method. that s why program could n t get array.

thank you very much Jeffrey actually you can still give me idea about how to add new option and value. I still couldnt add it. when I add new option it creates 4 of them.