RailsアプリケーションでJavaScriptを使用して動的にロードするSVGファイルがあります。 SVGをインラインでロードしてCSS fill
プロパティを適用する必要があります。テキストファイルの内容をRailsのJavaScriptにロード
SVGが表示される前に潜在的な遅れを避けるために、AJAX経由でSVGファイルを読み込むのではなく、私がやりたいものを理想的に
は、私のapp/assets/icons/
ディレクトリに、私はアイコンcalendar.svg
とphone.svg
を持っているのRailsに伝えることです、とRails(スプロケットは?)これらSVGファイルの内容を取得し、文字列としてそれらを設定する必要があることJavaScriptオブジェクトSVG
の値、私はこのように私のJavaScriptコードでそれらにアクセスできるように:
var view = {
render: function() {
this.element.innerHTML = SVG['app/assets/icons/calendar.svg'];
}
};
好ましくは、溶液がちょうどSVGs以上に一般化された、と私は潜在的に経由してテキスト形式で任意のデータを読み込むことができますJS、例えばTEXT['app/assets/icons/calendar.svg']
またはさらにTEXT['app/assets/etc/some-text-file.text']
である。
これをRailsで実行する方法はありますか?
ビューテンプレート内SVGの内容を入れてからあなたを停止しているもの(例えばERB。)? – emaillenin
私は可能ですが、それはうまく拡張できません。なぜなら、私のサーバから返されたHTMLにSVGがたくさんあると、ブラウザがHTMLをダウンロードしてページを表示するのに時間がかかります。一方、あるネットワーク要求(おそらく私が作っておかなければならないJS要求)にSVGをロードすると、そのロードは、ユーザが見るためのページ上に何かがあるまで延期することができます。 – Jackson
その質問に対するもう1つの答えは、アプリケーションがSPAであり、多くのアーキテクチャ上の理由から、ビューはERBテンプレートではなくJSで作成する必要があるということです。 – Jackson