On Nov 4, 2013, at 3:19 AM, Tamara Temple <[email protected]> wrote:
> > On Nov 3, 2013, at 3:35 PM, Tamara Temple <[email protected]> wrote: > >> >> On Nov 1, 2013, at 9:20 AM, leo nike <[email protected]> wrote: >> >>> Hi, I Want to simply print out 2d array elements. Method is located in >>> Helper module. Calling helper method from jQuery. At the moment I'm not >>> getting output (=> 0..3) I tried to do iterate through array via .each() >>> method, but it would just print en entire array, however i want to >>> access each element and convert it either to string or integer. can >>> someone point me to possible solution? thanks! >>> >>> #app/helpers/controller_helper.rb >>> def get_array >>> database = SQLite3::Database.open("test.db") >>> result = database.execute("select * from table1") >>> print_array(result) >>> end >>> >>> def print_array(array) >>> for i in 0..array.length >>> puts array[i][i] >>> end >>> end >>> >>> ------------------------------------------------------------------- >>> #app/views/controller/file.js.erb >>> if($('.check_box1').is(':checked')){ >>> $("#div2").html("<%= get_array%>") >>> } >>> >>> -- >>> Posted via http://www.ruby-forum.com/. >> >> You don’t want to use puts in there. You want to return the value so it gets >> evaluated in the erb code. puts returns nil, which means you get nothing >> inside the html element. >> >> I’m not exactly sure from that method what you want inside div2 either. >> >> Here’s what I’d suggest: >> >> def get_array() >> # sqlite stuff as you have it >> format_table(result) >> end >> >> def format_table(data) >> out = "<table>\n" >> out += data.map do |row| >> format_row(row) >> end.join("\n") >> out += "\n</table>\n" >> end >> >> def format_row(row) >> out = "<tr>" >> out += row.map do |cell| >> format_cell(cell) >> end.join >> out += "</tr>" >> end >> >> def format_cell(cell) >> "<td>#{cell}</td>" >> end >> >> This will output html code, which seems like what you’d want at that point. > > then i decided it was too 'wet', and refactored: > > def wrap(s, tag, attr={}, &b) > s = [s] unless s.is_a? Array > attr = attr.empty? ? '' : " #{attr.map{|k,v| "#{k}='#{v}'"}.join(" ")}" > out = "<#{tag}#{attr}>" > out += s.inject("") {|m,o| m+="#{block_given? ? (yield o) : o}"} > out += "</#{tag}>" > end > > > def format_table(data) > wrap(data,"table",border: 1) do |row| > wrap(row,"tr") do |cell| > wrap(cell,"td") > end > end > end > > data=[[1,2,3,4],[5,6,7,8]] > > formate_table(data) # => "<table > border='1'><tr><td>1</td><td>2</td><td>3</td><td>4</td></tr><tr><td>5</td><td>6</td><td>7</td><td>8</td></tr></table>" > > (https://gist.github.com/tamouse/7300078 ) > Listening to one of Ruby Tapas made me shake my head with pain. This: s = [s] unless s.is_a? Array should be this: s = Array.new(s) -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/20679126-A470-4632-BC6D-F79A315297E9%40gmail.com. For more options, visit https://groups.google.com/groups/opt_out.

