2015-11-25 82 views
0

我正在清理我的Rails應用程序的代碼。我正在使用Raty-gem作爲我的評分系統。爲了呈現#average_rating,我在特定的視圖中使用了一個腳本塊(在某些教程中選擇了該腳本)。但是因爲我在6種不同的視圖中使用#average_rating,所以我希望我可以更高效地做到這一點。我已經嘗試過使用HelperMethod,但我想它不接受'javascript'。我可以爲JavaScript塊創建ViewHelper嗎?

腳本塊:

<script> 
$('#average_rating').raty({ 
    path: '', 
    readOnly: true, 
    score: <%= @project.average_rating %> 
}); 
</script> 

什麼是Rails中這樣做的最徹底的方法?

回答

0

是的,使用由rails提供的content_for輔助方法定義JavaScript塊的方法更爲簡潔。您可以在名爲content_for的塊內定義代碼片段,並且可以在視圖的任何位置使用。 如

<% content_for :rating_code do %> 
    $('#average_rating').raty({ 
    path: '', 
    readOnly: true, 
    score: <%= @project.average_rating %> 
    }); 
<% end %> 

查看文檔在這裏:http://apidock.com/rails/ActionView/Helpers/CaptureHelper/content_for

+0

好,看起來很簡單。但是我在哪裏放置這段代碼:在一個輔助方法中? (它看起來像它包含視圖代碼)或者其他地方? –

+0

您可以在'app/views/layouts/application.html.erb'文件中爲標籤定義內容,並在任何視圖中對其進行初始化。該代碼將只生成在哪個頁面上生成代碼,如下所示:<%= yield(:code_tag_name)%> –

+0

完美,它的工作原理! –

0

如果你有大量的數據傳遞到JavaScript和你想保持在js文件你的JS代碼,你可以使用the Gon gem

相關問題