2017-08-21 279 views
0

我正在使用Ruby on Rails,JavaScript和簡單窗體,並且我在將JavaScript代碼添加到JavaScript中的函數時遇到了問題。將Ruby代碼添加到JavaScript代碼

我的源代碼是:

$('#add_taxo').on('click',function() { 
    document.getElementById('okok').innerHTML += '<li class="list-group-item"> <%= taxonomies_select_tag('statistic[taxonomy]', Folders::Taxonomy, Folders::Taxonomy::TAXONOMY_KEY, level: 3, path: 'folders/taxonomies', include_blank: true, class: 'required form-control test_taxo')%> </li>'; 
    alert("lklk"); 
}); 

此代碼不能正常工作。

回答

0

嘗試逃逸的Ruby代碼的JavaScript,像這樣:

document.getElementById('okok').innerHTML += '<li class="list-group-item"> <%= j(taxonomies_select_tag('statistic[taxonomy]', Folders::Taxonomy, Folders::Taxonomy::TAXONOMY_KEY, level: 3, path: 'folders/taxonomies', include_blank: true, class: 'required form-control test_taxo'))%> </li>'; 

您可以使用escape_javascript(...)j(...)(如上例)。

+0

它不起作用 –

+0

@youssefhassoun您是否在服務器日誌或瀏覽器控制檯上發現任何錯誤? – Gerry

+0

是的,我在這一行的瀏覽器上有錯誤 –

0

確保擴展名是.js.erb,它是視圖文件夾的一部分。

如果你想通過純js​​做到這一點,然後通過html通過這些變量,例如:隱藏字段,html標籤屬性。

1

您只能通過ajax通過view/*。js/coffee.erb文件使用ruby代碼。你不能在普通的js/coffeescript文件中使用ruby。如果您需要將數據從控制器傳遞給js端,那麼通過數據屬性將它們傳遞給視圖中隱藏的字段標記。

+0

重複的https://stackoverflow.com/questions/45806146/add-ruby-code-into-javascript-code/45808043#45808043 –

+0

這不是重複的代碼。該示例沒有解釋上下文中的代碼需要通過'views/* js.erb'中的ajax響應來處理,而不是資產。 – Kao