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 )

-- 
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/BD222CFA-9460-42E5-A0DF-5B606F621707%40gmail.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to