2016-01-25 31 views
1

我在我的Ruby on Rails應用程序的link_to方法的意見之一,當我點擊它,將控制器設置做了一大堆的東西......但是由於某種原因,我看到這個GET即使我點擊鏈接一次,請求兩次。爲什麼我的Ruby on Rails link_to發送兩次動作?

這裏的鏈接是什麼樣子:

<%= link_to image_tag("excel.png"), spreadsheet_technical_report_path(report) %> 

都到/ technical_report/ID /電子表格,這裏是什麼樣子的控制器:

def spreadsheet 
    spreadsheet = GenerateSpreadsheet.generate(params[:id]) 
    send_file spreadsheet 
    end 

我甚至已經取代了該功能的內容與一個binding.pry,它擊中了兩次!這很混亂。我的整個GenerateSpreadsheet模型做了各種各樣的事情,大約需要一分鐘,而這個第二個請求只做了兩倍的時間。

有人能告訴我什麼,我在這裏失蹤?我沒有爲此設置視圖,因爲我希望它只向用戶發送下載提示(正在執行),而不一定會轉到視圖。我甚至不知道在這裏甚至沒有觀點。

+1

有時會發生由於JS衝突或JS被加載兩次申請,請檢查 – chaitanya

+0

我修改了應用程序加載特定頁面的JS腳本,它仍然這樣做。還有其他建議嗎? – LewlSauce

+0

轉到您的應用程序的根文件夾。運行這個命令'rm -r assets'並以開發模式運行你的服務器。告訴我它是否解決了這個問題。 –

回答

0

由於切塔尼亞薩拉夫的評論,我只是刪除了「// =需要的樹。」從我的application.js得到這個修復。一旦我擺脫這個問題,我已將此添加到我的配置/初始化/ asset.rb文件

Rails.application.config.assets.precompile += [/.*\.js/,/.*\.css/] 

擺脫了這個惱人的問題很好的和容易。

2

JS

爲了增加註釋,這裏主要的問題可能會是你已經綁定一些JavaScript頁面的a元素。

隨着闊別remote: true等掛鉤,該只有件事可能會從您的link_to導致雙火,如果JavaScript是Ajax請求過。


你提到你...

從去除//= require tree .application.js

...雖然好,這個固定的問題,你一定要記住,沒有任何反應與沒有他們的電腦被告知要這樣做。 IE的「鏈接」不會因爲它而雙擊。

如果當您刪除//require_tree .你的JS工作,你要看看你有其他的JS文件。將有一個您綁定到$("a").on("click"事件,這可能會導致您的鏈接雙擊。

+0

任何想法爲什麼我根本沒有加載任何「js」文件,但它仍然提交兩個請求?現在第一個請求只是一個GET,下一個是HEAD ...這太令人討厭了。 – LewlSauce

+0

你可以發佈控制檯截圖嗎?我也想知道這個問題是什麼 –

+0

這是它。這是有一個空的application.js文件的結果:http://imgur.com/a/XW9rC – LewlSauce