Добавление нескольких изображений или без изображений в блоге с помощью Ruby on Rails - PullRequest
1 голос
/ 23 июня 2019

Я создаю веб-сайт для фанатов K-pop, чтобы публиковать что-либо о K-pop.В настоящее время я пользуюсь учебным пособием по созданию веб-сайта, однако я бы хотел, чтобы у пользователя была возможность загружать фотографии или одну или несколько фотографий.Как мне этого добиться?

(Вот учебник, которому я следую https://www.youtube.com/watch?v=BI_VnnOLSKY)

Я попытался выполнить поиск "Добавление нескольких фотографий или фотографий без использования рельсов", однако ониотображается только «Как добавить фотографии для публикации» и т. д.

Я использую repl.it для создания веб-сайта.

1 Ответ

0 голосов
/ 24 июня 2019

Для этого вам нужно добавить несколько элементов в отправку. В Ruby on Rails вы можете использовать accepts_nested_attributes_for , стандартную функциональность для включения вложенных атрибутов в отправку:

#app/models/post.rb (or blog_post whatever your model name)
class Post < ActiveRecord::Base
   has_many :images # association with image model
   accepts_nested_attributes_for :images, reject_if: :all_blank, allow_destroy: true
end

В файле rout.rb: - ​​

#config/routes.rb
resources :posts

В файле контроллера: -

#app/controllers/posts_controller.rb
class PostsController < ApplicationController

   def new
     @post = Post.new
     @post.images.build
   end

  .
  .
  .
end

Приведенный ниже код должен предоставить вам форму для @post со встроенными изображениями внутри. Чтобы добавить «лишние» поля, вам лучше всего посмотреть на камень кокона или этот Railscast: Nested Forms part 1

Здесь я использую "nested_form" gem: -

#app/views/posts/new.html.erb
<%= nested_form_for @post do |f| %>
  <%= f.text_field :x %>
  <%= f.text_field :y %>
  .
  .
  .

  <%= f.fields_for :images do |i| %>
     <% if i.object.new_record? %>
       <%= i.file_field :attachment %>
     <% else %>
       <%= image_tag i.object.attachment.url %>
     <% end %>
     <%= i.link_to_remove "Remove image" %>
  <% end %>
  <p><%= f.link_to_add "Add image", :images%></p>


  <%= f.submit %>
<% end %> 

Я надеюсь, что приведенный выше код поможет вам достичь вашей функциональности:)

...