The following code does not work. It says undefined method 'table_name' for nil:NilClass
@members = Members.all
table member_list_rows do
if @members.table_name == members
row(0).background_color = '3498db'
end
end
Full code
class MemberPdf < Prawn::Document
def initialize(members, view, allcount)
super(top_margin: 50)
if members.size != allcount
@warn = " (Not all members)"
else
@all = " All"
end
text "Showing#{@all} #{members.size} Members", size: 18, style: :bold, align: :center, color: "636363"
text "#{@warn}", size: 11, align: :center, color: "858585"
@members = members
@view = view
member_list
end
def member_list
move_down 20
table member_list_rows do
self.row(0).align = :center
if @members.table_name == "members"
row(0).background_color = '3498db'
else
end
row(0).text_color = "FFFFFF"
self.row_colors = ["DDDDDD", "FFFFFF"]
self.header = true
#self.cell.text_color = "B3B3B3"
row(0).columns(0).style size: 20
end
end
def member_list_rows
[["Name", "Awardunit", "Address", "Contact", "Level of Entry", "Current Award", "Disabled?" ]] +
@members.map do |member|
[member.name, member.awardunit.name, member.address, member.name, member.entrylvl, member.currentaward, @view.yesno(member.disabled)]
end
end
end
Members controller
if params[:commit] == "Clear"
params[:q] = nil
end
respond_to do |format|
format.html
format.pdf do
pdf = MemberPdf.new(Member.search(params[:q]).result.order( 'name ASC' ), view_context, Member.all.size)
send_data pdf.render, filename: "Members_List.pdf", type: "application/pdf", disposition: "inline"
end
end
putsthe initial text to the console instead of usingtextin your PDF-file, that might allow you to see how many members you have. However, I still fail to see wheretable_nameshould be defined.@memberswill just hold anArraywhich will not answer to yourtable_nameeven if it is notnil. Maybe you can add anotherputs @members.countinsidemember_list_rowsto help with debugging?