Table helper not rendering table

Hey all,

layout_helper.rb:

def table(collection, header_names, fields, class_name)
return false unless collection.any?
table_str = “”
table_str += “<table id=”" + class_name + “” class="" + class_name

  • “”>\n"
    table_str += “\t\n”
    table_str += “\t\t\n”
    header_names.each do |name|
    table_str += “\t\t\t”
    table_str += name
    table_str += “\n”
    end
    table_str += “\t\t\n”
    table_str += “\t\n”
    table_str += “\t

    \n”
    collection.each do |col|
    table_str += “\t\t\n”
    fields.each do |name|
    table_str += “\t\t\t\n”
    table_str += col[name].to_s
    table_str += “\t\t\t\n”
    end
    table_str += “\t\t\n”
    end
    table_str += “\t\n”
    table_str += “\n”

    end

users_controller.rb:

def index
@users = User.find(:all,:order => ‘id ASC’)
@headers = [“id”,“Email”,“Name”,“Company”,“Telephone”]
@fields = [:id, :email,:last_name,:company,:telephone]
end

users/index.html.erb:
<%= table(@users, @headers, @fields,‘table_class’) %>

What the above does is render a big string of what I am wanting to
display as html markup. If I add puts(table_str) to the helper method,
then nothing gets rendered on the page.

Any idea what I am doing wrong?

Thanks for response.

On Mar 18, 7:06pm, John M. [email protected] wrote:

table_str += “\t\t\n”
fields.each do |name|

What the above does is render a big string of what I am wanting to
display as html markup. If I add puts(table_str) to the helper method,
then nothing gets rendered on the page.

Any idea what I am doing wrong?

Have you checked that your table method is actually being called (eg
by sticking a breakpoint in it or some calls to Rails.logger.info) ?

Fred

Frederick C. wrote in post #988214:

On Mar 18, 7:06pm, John M. [email protected] wrote:

table_str += “\t\t\n”
fields.each do |name|

What the above does is render a big string of what I am wanting to
display as html markup. If I add puts(table_str) to the helper method,
then nothing gets rendered on the page.

Any idea what I am doing wrong?

Have you checked that your table method is actually being called (eg
by sticking a breakpoint in it or some calls to Rails.logger.info) ?

Fred

Im pretty sure it gets called because it outputs html as one huge string
e.g. ‘

’ and one long string displays in the browser.
That’s when I don’t add puts at the end of the helper method. When I add
puts and pass in the concatenated string, nothing gets displayed at all.

Item

On Mar 18, 7:58pm, John M. [email protected] wrote:

Any idea what I am doing wrong?

Have you checked that your table method is actually being called (eg
by sticking a breakpoint in it or some calls to Rails.logger.info) ?

Fred

Im pretty sure it gets called because it outputs html as one huge string
e.g. ‘

’ and one long string displays in the browser.
That’s when I don’t add puts at the end of the helper method. When I add
puts and pass in the concatenated string, nothing gets displayed at all.

Oops, had missed the comment about the output you get.
Sticking in puts suppresses all output because the result of puts is
always nil. You’re seeing the html because rails automatically escape
html for you these days. You can call html_safe on a string to mark it
as not needing escaping (although that shifts the responsibility of
checking that things are indeed safe to you )

Fred

Item

You’re seeing the html because rails automatically escape
html for you these days. You can call html_safe on a string to mark it
as not needing escaping (although that shifts the responsibility of
checking that things are indeed safe to you )

Fred

Thanks it worked!