0

リストというモデルがあります。リストの私のindex.html.erbで。画面にすべてのリストが表示されます。リストモデルの_form.html.erbは次のようになります。

<%if user_signed_in? %>
<%=link_to "Sign Out",  destroy_user_session_path, :method => :delete %><br/>
<%= form_for(@listing, :html => {:multipart => true} ) do |f| %>
<% if @listing.errors.any? %>
 <div id="error_explanation">
   <h2><%= pluralize(@listing.errors.count, "error") %> prohibited this listing from   being saved:</h2>
  <ul>
  <% @listing.errors.full_messages.each do |msg| %>
    <li><%= msg %></li>
  <% end %>
  </ul>
  </div>
 <% end %>
 <div class="field">
 <%= f.label :name %><br />
 <%= f.text_field :name %>
</div>
<div class="field">
<%= f.label :id %><br />
<%= f.text_field :id %>
</div>

<%= f.label:image%>
<%= f.file_field:image%> <%= f.submit%> <%end%> <%else%> <%= link_to "Sign in"、new_user_session_path%>
管理者に連絡して、ログインとパスワードを取得してください<%end%>

ここで、このビューに関連付けられているモデルは「リスト」ですが、アップロードされた画像属性をアプリの別のモデル「画像」に保存したいと思います。

基本的に、Imがやろうとしているのは、すべてのモデルにビューから自分の写真をアップロードさせ、すべての画像属性を「Image」と呼ばれる単一のモデルに保存することです。また、画像自体はAmazonS3に保存されます。

したがって、問題は、これを実現するために「リスト」モデルにどのコードが組み込まれるか、そしてこれを実現するために「イメージ」モデルにどのコードが組み込まれるかです。そして、この情報はどのようにしてリストから画像に渡されますか?

現在リストモデルにあります:

class Listing < ActiveRecord::Base

 has_attached_file :image,:styles => {:thumb => "75x75>", :small => "150x150>", :medium => "300x300>"}

end

現在「画像」モデルにあります

# == Schema Information
#
# Table name: images
#
#  id                 :integer         not null, primary key
#  image_file_name    :string(255)
#  image_content_type :string(255)
#  image_file_size    :integer
#  image_type         :string(255)
#  created_at         :datetime        not null
#  updated_at         :datetime        not null 
#

class Image < ActiveRecord::Base
end

よろしくお願いします。

4

2 に答える 2

1

私はリストと画像の関係を想定していますが、あなたはアイデアを得る

<% fields_for @listing.image do | img | %>
  <%= img.file_field :image %>
  #etc
  <% end %>
<% end %>

もちろん、それらを関連付けたくない場合は、新しいImageオブジェクトを作成してfield_forに渡すことができますが、それらを関連付けておくのは理にかなっています。

于 2012-05-26T03:56:45.017 に答える
1

明確にするために、モデルに含まれるものは次のとおりです。

リストモデル

class Listing < ActiveRecord::Base
  has_one :image, dependent => :destroy
end

画像モデル

class Image < ActiveRecord::Base
  has_attached_file :image,
                    :styles => {:thumb => "75x75>", 
                                :small => "150x150>", 
                                :medium => "300x300>"}
end

次に、あなたのフォームで(DVGの回答から):

<% fields_for @listing.image do | img | %>
  <%= img.file_field :image %>
  #etc
  <% end %>
<% end %>
于 2012-05-26T08:36:32.737 に答える