bav*_*ten 2 ruby csv ruby-on-rails ruby-on-rails-3
我有一个下载文件 csv 的操作,但是当点击错误时 missing template
在我的行动中编码
def export
respond_to do |format|
format.html
format.csv { send_data UserDetail.order('id desc').first(20).to_csv }
end
end
Run Code Online (Sandbox Code Playgroud)
在我看来:
= link_to "Export CSV", export_call_center_user_details_path(format: "csv"), :class => "btn btn-default"
Run Code Online (Sandbox Code Playgroud)
错误:
由 CallCenter::UserDetailsController#export as CSV 处理在 5 毫秒内完成 500 内部服务器错误
在 user_details#export 中出现 ActionView::MissingTemplate:
缺少模板 call_center/user_details/export, application/export with {:locale=>[:en], :formats=>[:html], :handlers=>[:erb, :builder, :coffee, :haml]}。
当我尝试删除行时format.html
出现错误:
在 4ms 内完成 406 Not Acceptable (ActiveRecord: 0.3ms)
如何修复上面的错误?
错误:
开始 GET "/call_center/user_details/export.csv" for 127.0.0.1 at 2016-06-20 16:10:32 +0700 Processing by CallCenter::UserDetailsController#export as CSV Admin Load (0.3ms) SELECT
admins
.* FROMadmins
WHEREadmins
.id
= 3 LIMIT 1 Completed 500 Internal Server Error in 53ms
渲染 /home/thekop/.rvm/gems/ruby-2.1.4/gems/exception_notification-2.6.1/lib/exception_notifier/views/exception_notifier/_request.text.erb ( 0.8ms) 渲染 /home/thekop/.rvm/gems/ruby-2.1.4/gems/exception_notification-2.6.1/lib/exception_notifier/views/exception_notifier/_title.text.erb (0.3ms)
渲染 /home/thekop /.rvm/gems/ruby-2.1.4/gems/exception_notification-2.6.1/lib/exception_notifier/views/exception_notifier/_session.text.erb (1.0ms)
渲染/home/thekop/.rvm/gems/ruby-2.1.4/gems/exception_notification-2.6.1/lib/exception_notifier/views/exception_notifier/_title.text.erb (0.1ms) 渲染/home/thekop/.rvm /gems/ruby-2.1.4/gems/exception_notification-2.6.1/lib/exception_notifier/views/exception_notifier/_environment.text.erb (9.5ms)
渲染 /home/thekop/.rvm/gems/ruby-2.1.4 /gems/exception_notification-2.6.1/lib/exception_notifier/views/exception_notifier/_title.text.erb (0.1ms)
渲染 /home/thekop/.rvm/gems/ruby-2.1.4/gems/exception_notification-2.6.1 /lib/exception_notifier/views/exception_notifier/_backtrace.text.erb (0.5ms)
渲染 /home/thekop/.rvm/gems/ruby-2.1.4/gems/exception_notification-2.6.1/lib/exception_notifier/views/exception_notifier /_title.text.erb (0.1ms)
渲染 /home/thekop/.rvm/gems/ruby-2.1.4/gems/exception_notification-2.6.1/lib/exception_notifier/views/exception_notifier/exception_notification.text.erb (21.4ms)发送邮件至 deekautest@gmail.com (1404ms) 日期:2016 年 6 月 20 日星期一 16:10:33 +0700 发件人:xxx 收件人:deekautest@gmail.com 邮件 ID:<5767b30931faa_ca17df30c996ab@thekop. xxx] user_details#export (ActionView::MissingTemplate) "缺少模板 call_center/user_details/e... Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit
在 user_details#export 中出现 ActionView::MissingTemplate:
缺少模板 call_center/user_details/export, application/export with {:locale=>[:en], :formats=>[:html], :handlers=>[:erb, :builder, :coffee, :haml]}。搜索: * "/home/thekop/rails/xxx/app/views/templates/xxx" * "/home/thekop/rails/xxx/app/views" * "/home/thekop/.rvm/gems/ruby -2.1.4/gems/devise-3.5.2/app/views" * "/home/thekop/.rvm/gems/ruby-2.1.4/gems/twitter-bootstrap-rails-2.2.4/app/views ”
actionpack (3.2.13) lib/action_view/path_set.rb:58:in `find'
我们需要做的第一件事是打开 config/application.rb 文件并添加:
require 'csv'
Run Code Online (Sandbox Code Playgroud)
在说:
require 'rails/all'
Run Code Online (Sandbox Code Playgroud)
接下来,我们需要向模型添加一些代码,以 CSV 格式导出数据。将以下代码添加到要导出为 CSV 的模型中:
def self.as_csv
CSV.generate do |csv|
csv << column_names
all.each do |item|
csv << item.attributes.values_at(*column_names)
end
end
end
Run Code Online (Sandbox Code Playgroud)
此代码将导出列标题以及 csv 格式的数据并返回结果。
最后,我们需要向我们的控制器添加一些额外的代码,以便将 CSV 数据返回给我们的用户。假设你的模型和控制器被命名为posts,将以下代码添加到你的posts控制器中:
def index
@details = UserDetail.order('id desc').first(20)
respond_to do |format|
format.html
format.csv { send_data @details.as_csv }
end
end
Run Code Online (Sandbox Code Playgroud)
学分:检查
归档时间: |
|
查看次数: |
1855 次 |
最近记录: |