0

Rails 3.0 を使用しており、ロゴ イメージのハードコードされたパスを含む js.erb ファイルがありますが、これは、アプリケーションがデプロイされると、アプリケーションにロゴを簡単に追加できないことを意味します。理想的には、ディレクトリ内のすべての画像の名前を見つけて、ユーザーがフォルダにいくつかの画像を投げてロゴを追加できるようにしたいと考えています。

私はこのコードを試してみました. ただし、これは js.erb であり、app/assets/javascripts フォルダーにあるため、コントローラーから js.erb に ruby​​ 変数を取得する方法がわかりません。

また、いくつかのファイル API にアクセスするために、js.erb に System.IO を簡単にインポートしてみました。動作しませんでした。erb ファイルの操作にあまり慣れていません。

4

1 に答える 1

1

js.erb ファイルが、通常の html.erb アクション ビューと同じ方法でコントローラーのメソッドに直接アクセスできないことは正しいです。Ruby コア ライブラリを参照できるため、ファイル リスト ロジックを js.erb に直接埋め込むことができます。たとえば、このスニペットは、app/assets/images ディレクトリ内のファイルの名前を JavaScript 配列として出力します。

var files = [
<% Dir.entries("#{Rails.root}/app/assets/images").each do |file_name| %>
  '<%= file_name %>',
<% end %>
];

または、ヘルパー クラスにヘルパー メソッドを実装することもできます。

module ApplicationHelper
  def image_files
    Dir.entries("#{Rails.root}/app/assets/images")
  end
end

次に、次のように js.erb に含める必要があります。

<% environment.context_class.instance_eval { include ApplicationHelper } %>
var files = [
<% image_files.each do |file_name| %>
  '<%= file_name %>',
<% end %>
];
于 2012-09-21T19:18:32.527 に答える