Для этого вам нужно добавить несколько элементов в отправку. В 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 %>
Я надеюсь, что приведенный выше код поможет вам достичь вашей функциональности:)