Ruby on rails 表格3问题

Ruby on rails 表格3问题,ruby-on-rails,Ruby On Rails,我已将rails 2.3.10应用程序升级为rails 3.0.3。在我的应用程序中,我有一个功能,比如用户可以将数据下载到excel中 我的gem版本:电子表格-0.6.4.1 我已经在Gemfile中声明了gem版本,并在application.rb中声明了Mime::Type.register\u别名“application/excel”:xls。我的excel生成代码如下 <% book = Spreadsheet::Workbook.new data = book.creat

我已将rails 2.3.10应用程序升级为rails 3.0.3。在我的应用程序中,我有一个功能,比如用户可以将数据下载到excel中

我的gem版本:电子表格-0.6.4.1

我已经在Gemfile中声明了gem版本,并在application.rb中声明了Mime::Type.register\u别名“application/excel”:xls。我的excel生成代码如下

<%

book = Spreadsheet::Workbook.new
 data = book.create_worksheet :name => 'myname'
 data.row(0).concat %w{name email}
 header_format = Spreadsheet::Format.new :color => :green, :weight => :bold
 data.row(0).default_format = header_format

@names.results_data.each_with_index { |n, i|

data.row(i+1).push n.name,n.email
}

blob = StringIO.new('')
book.write(file_blob)
-%><%=blob.string%>
“我的名字”
data.row(0).concat%w{name email}
header\u format=电子表格::format.new:color=>:绿色,:weight=>:粗体
data.row(0)。默认格式=标题格式
@name.results_data.each_与_索引{| n,i|
data.row(i+1).推送n.name,n.email
}
blob=StringIO.new(“”)
book.write(文件\u blob)
-%>
我的控制器代码是:

respond_to do |format|
      format.html
      format.rss
      format.xls {    
        view_output = render_to_string :action => "excel" << name
        send_data(view_output, :type=>"application/ms-excel", :filename => "name.xls")
      }
respond|to do |格式|
format.html
format.rss
format.xls{
查看\输出=呈现\到\字符串:操作=>“excel”“应用程序/ms excel”,:文件名=>“name.xls”)
}
问题是,当单击excel链接时,它会打开excel窗口,并在弹出窗口中显示“name.xls[2]无法访问”。可能已损坏或为只读。。。我已经改变了所有的可能性,如宝石升级,mime类型的变化,但没有运气

有人能说出错误是什么吗两个想法:

  • excel.xls.erb不需要是erb文件。您可以轻松地将其放入当前控制器中的帮助器或其他方法中。我知道ERb的语义,所以这可能是您出错的原因

     def render_to_xls(names, name = 'myname')
    
      book = Spreadsheet::Workbook.new
      data = book.create_worksheet :name => name
      data.row(0).concat %w{name email}
      header_format = Spreadsheet::Format.new :color => :green, :weight => :bold
      data.row(0).default_format = header_format
    
      names.results_data.each_with_index { |n, i|
    
         data.row(i+1).push n.name,n.email
      }  
      blob = StringIO.new('')
      book.write(blob)
      blob
    end
    
    稍后,在响应者代码中:

        respond_to do |format|
          format.html
          format.rss
          format.xls {    
            send_data(render_to_xls(@names, name), :type=>"application/ms-excel", :filename => "name.xls")
          }
    
  • 尝试将以前的excel文件与当前的excel文件进行比较,看看是否存在奇怪的空格差异或类似的情况

  • 两个想法:

  • excel.xls.erb不需要是erb文件。您可以轻松地将其放入当前控制器中的帮助器或其他方法中。我知道ERb的语义,所以这可能是您出错的原因

     def render_to_xls(names, name = 'myname')
    
      book = Spreadsheet::Workbook.new
      data = book.create_worksheet :name => name
      data.row(0).concat %w{name email}
      header_format = Spreadsheet::Format.new :color => :green, :weight => :bold
      data.row(0).default_format = header_format
    
      names.results_data.each_with_index { |n, i|
    
         data.row(i+1).push n.name,n.email
      }  
      blob = StringIO.new('')
      book.write(blob)
      blob
    end
    
    稍后,在响应者代码中:

        respond_to do |format|
          format.html
          format.rss
          format.xls {    
            send_data(render_to_xls(@names, name), :type=>"application/ms-excel", :filename => "name.xls")
          }
    
  • 尝试将以前的excel文件与当前的excel文件进行比较,看看是否存在奇怪的空格差异或类似的情况


  • 请正确编码:请正确编码: