簡體   English   中英

在顯示頁面中使用載波上傳圖像

[英]Image upload using carrierwave in show page

使用Rails 4和Ruby 2.2,

我將書籍作為模型,應該在書籍的顯示頁面中具有圖像上傳功能。 因此,用戶可以先創建書籍,然后從顯示頁面上載書籍的多個圖像。 我已將載波用作寶石,並為Image創建了單獨的模型。

image.rb

class Image < ActiveRecord::Base
  belongs_to :book

  mount_uploader :avatar, AvatarUploader
end

book.rb

class Book < ActiveRecord::Base
    belongs_to :subject, dependent: :destroy
    belongs_to :user, dependent: :destroy
    has_many :images, dependent: :destroy
end

books / show.html.erb

<%= form_for(Image.new, :html => { :multipart => true }) do |f| %>
   <div class="field">
     <%= f.label :name %><br>
     <%= f.text_field :name %>
     <%= hidden_field_tag "image[book_id]", @book.id %>
   </div>
   <%= f.fields_for :images do |p| %>
     <div class="field">
       <%= p.label :avatar %><br>
       <%= p.file_field :avatar, :multiple => true, name: "images[avatar]" %>
     </div>
   <%end%>

   <div class="actions">
     <%= f.submit %>
   </div>
<% end %>

schema.rb

  create_table "images", force: :cascade do |t|
    t.datetime "avatar_updated_at"
    t.datetime "created_at",                    null: false
    t.datetime "updated_at",                    null: false
    t.integer  "book_id",           limit: 4
    t.string   "avatar",            limit: 255
    t.string   "name",              limit: 255
  end

  create_table "books", force: :cascade do |t|
    t.string   "title",       limit: 255
    t.integer  "page_number", limit: 4
    t.text     "description", limit: 65535
    t.datetime "created_at",                                null: false
    t.datetime "updated_at",                                null: false
    t.integer  "user_id",     limit: 4
    t.integer  "subject_id",  limit: 4
    t.boolean  "active",                    default: false
  end

現在我無法繼續進行此操作,有人可以對此進行指導,因為我在書籍/展覽頁面中有表格,並且在成功更新圖像后需要在同一頁面上顯示圖像。(可以上傳多個圖像)

提前致謝

讓我知道是否需要提供更多信息。

您可以使用關聯本身,並列出所有已上傳的圖像。

<%= form_for(Image.new, :html => { :multipart => true }) do |f| %>
   <div class="field">
     <%= f.label :name %><br>
     <%= f.text_field :name %>
     <%= hidden_field_tag "image[book_id]", @book.id %>
   </div>
   <%= f.fields_for :images do |p| %>
     <div class="field">
       <%= p.label :avatar %><br>
       <%= p.file_field :avatar, :multiple => true, name: "images[avatar]" %>
     </div>
   <% end %>
   <!-- Listing all the images for a book -->
   <% if @book.images.any? %>
      <% @book.images.each do |img| %>
        <%= image_tag(img.avatar.url) %>
      <% end %>
   <% end %>
   <div class="actions">
     <%= f.submit %>
   </div>
<% end %>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM