Oh, forgot to hand the accumulator back in that inject call. Should look like: mapped_faculties = @faculties.inject({}) { |a, fac| a[fac.id] = {}; a }
On Tue, May 21, 2013 at 11:38 AM, Duncan Beevers <dun...@dweebd.com> wrote: > You might be happier using Ruby to map your data to JSON, and then feeding > that to your JavaScript, rather than using Ruby to dynamically generate > JavaScript. > > For example, if you wanted to map the data directly in the view, could do > so like this. > > - mapped_faculties = @faculties.inject({}) { |a, fac| a[fac.id] = {} } > :javascript > var departments = #{mapped_faculties.to_json}; > > In general, I would recommend doing these types of transformations in the > controller rather than in the view itself, but the principle is the same. > > > On Tue, May 21, 2013 at 11:29 AM, Duncan Beevers <dun...@dweebd.com>wrote: > >> You're in a javascript filter. The code that you think is iterating >> through @faculties is actually just being inlined as javascript into a >> script tag. >> >> >> On Tue, May 21, 2013 at 11:22 AM, Les Nightingill <codehac...@comcast.net >> > wrote: >> >>> I have this in a rails view file: >>> >>> ... >>> :javascript >>> var departments = new Object() >>> - @faculties.each do |fac| >>> departments['#{ fac.id }']= new Object() >>> >>> And the error message I get is: >>> >>> undefined local variable or method `fac' for >>> #<#<Class:0x00000104e1b3d8>:0x000001074bb420> >>> >>> I'm clearly missing something very basic. Can anyone see what the >>> problem is, please. Thanks in advance. >>> >>> Les >>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "Haml" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to haml+unsubscr...@googlegroups.com. >>> To post to this group, send email to haml@googlegroups.com. >>> Visit this group at http://groups.google.com/group/haml?hl=en. >>> For more options, visit https://groups.google.com/groups/opt_out. >>> >>> >>> >> >> > -- You received this message because you are subscribed to the Google Groups "Haml" group. To unsubscribe from this group and stop receiving emails from it, send an email to haml+unsubscr...@googlegroups.com. To post to this group, send email to haml@googlegroups.com. Visit this group at http://groups.google.com/group/haml?hl=en. For more options, visit https://groups.google.com/groups/opt_out.