0

データベースに製品ビューの列があります(例:上、下、前、後ろ)。ユーザーが各ビューの画像をアップロードできるように、一連のファイル入力を生成しようとしています。これは私が求めている結果です:

...
<label>Top</label>
<input type="file" name="image[Top]"><br>
<label>Bottom</label>
<input type="file" name="image[Bottom]"><br>
<label>Front</label>
<input type="file" name="image[Front']"><br>
...

これは私が試していることです:

<%= views = View.order('name ASC').all.map { |view| [view.name, view.id] } %>
<%= views.each { |view| label(view); file_field('image', view) } %>

ただし、これはviews配列を数回出力するだけです。Railsの専門家が私を正しい方向に向けてくれることを願っています。(Rubyを屠殺している場合は、事前にお詫び申し上げます。)

4

1 に答える 1

2

ロジックをビューからコントローラーまたはヘルパーメソッドに移動することをお勧めします。あなたのviews_controller.rb:

@views = View.all.order('name ASC')

これにより、インスタンスオブジェクトの配列が得られます。つまり、次の方法でビュー名にアクセスできます。

@views.each do |v|
   var = v.name
# other code for iterating on View ...
end

これで、ビュー(form_forまたはform_tagである必要があるため、画像を選択してアップロードできます)で、次のことができます。

<%= form_for(@catalogue) do |f| %>
  <%= @views.each do |v| %>
    <%= f.label v.name %>    < br/ >  
    <%= f.file_field v.name %>
  <% end %>

  <% f.submit %>

<% end %>
于 2012-11-20T22:57:20.783 に答える