0

js ファイルで使用する必要があるコントローラーで宣言された文字列の配列があります。これが私のコードです:

#controller
@cars = current_user.cars.completed.collect{|c| c.name.titleize }
puts "#{@cars.inspect}"

putsリターン:

["Presentation 2", "Presentation 1"]

javascript で配列を使用する必要があるので、次のようにします。

//javascript
var lineChartData = {
    labels : <%= @cars %> 
}

ただし、ブラウザが次のように読み取っているため、javascript は機能していません。

//javascruot
var lineChartData = {
    labels : [&quot;Presentation 2&quot;, &quot;Presentation 1&quot;], 
}

私はこのように使ってみhtml_safeました:

#controller
@cars = current_user.cars.completed.collect{|c| c.name.titleize.html_safe }
puts "#{@cars.inspect}"

しかし、それは効果がありません。引用符を正しく機能させるにはどうすればよいですか?

4

3 に答える 3

0

ERB を使用して JS ビューを生成しているようです。このように ERB と JS を混在させないことをお勧めします。コントローラー内の Ruby オブジェクトに変数を設定できるGonなどのツールを使用してみてください。また、JavaScript オブジェクトを使用して JS 内のデータを参照できます。このアプローチの利点は、純粋な JS を記述して、それを assets ディレクトリに保持できることです。その後、アセット パイプラインを利用できます: 最小化、醜化、コーヒー スクリプトなど。アセット ディレクトリ内の純粋な JS は、Jasmine などの JS テスト フレームワークを使用してより簡単にテストすることもできます。

于 2015-07-29T22:14:04.213 に答える