Ruby on Rails send_file,控制器动作中的代码运行两次

我遇到了一个用户可下载文件的奇怪问题,文件正在正常下载,但控制器操作中的其他代码正在执行两次。 我正在使用CarrierWave,它安装在.file上的Document模型中。

我希望用户能够单击此链接下载文件:

 

这就是我的控制器的样子:

  def show document = Document.find(params[:id]) # Track this download CourseDownload.create(course: document.course, user: current_user) # Download the file send_file 'public' + document.file.url.to_s end 

单击该链接时,文件将下载,但会创建2个CourseDownload记录。 在日志中,看起来GET请求发生了两次:

 Started GET "/documents/1" for 127.0.0.1 at 2014-04-17 18:12:47 -0400 Processing by DocumentsController#show as HTML Parameters: {"id"=>"1"} Document Load (0.2ms) SELECT "documents".* FROM "documents" WHERE "documents"."id" = ? LIMIT 1 [["id", "1"]] User Load (0.2ms) SELECT "users".* FROM "users" WHERE "users"."remember_token" = 'xxx' LIMIT 1 CACHE (0.0ms) SELECT "documents".* FROM "documents" WHERE "documents"."id" = ? LIMIT 1 [["id", "1"]] public/uploads/document/file/1/bootstrap-3.0.0.zip Sent file public/uploads/document/file/1/bootstrap-3.0.0.zip (0.1ms) Completed 200 OK in 7ms (ActiveRecord: 0.4ms) Started GET "/documents/1" for 127.0.0.1 at 2014-04-17 18:12:47 -0400 Processing by DocumentsController#show as HTML Parameters: {"id"=>"1"} Document Load (0.2ms) SELECT "documents".* FROM "documents" WHERE "documents"."id" = ? LIMIT 1 [["id", "1"]] User Load (0.1ms) SELECT "users".* FROM "users" WHERE "users"."remember_token" = 'xxx' LIMIT 1 CACHE (0.0ms) SELECT "documents".* FROM "documents" WHERE "documents"."id" = ? LIMIT 1 [["id", "1"]] public/uploads/document/file/1/bootstrap-3.0.0.zip Sent file public/uploads/document/file/1/bootstrap-3.0.0.zip (0.1ms) Completed 200 OK in 5ms (ActiveRecord: 0.3ms) 

知道我做错了什么吗?

谢谢!

这个问题最终是由陷入困境引起的。

已解决:

 <%= link_to document.file.file.filename, document_path(document), 'data-no-turbolink' => true %>