Вы можете делать все, что угодно, в рельсах! Самый лучший подход, на мой взгляд, - создать так называемую модель формы, так как эта форма будет много, и вы не захотите прогнать несколько моделей с проверками и т. Д. Для одного вида вашего приложения. Для этого вы в основном собираетесь создать класс, в который будет входить вся эта информация, выполнить все необходимые проверки, а затем создать любые записи, которые вам нужны, в любых моделях, которые у вас есть. Для этого создайте новый файл в папке с образцом под названием so_much.rb
(вы можете сделать любое имя файла, которое вы хотите, просто убедитесь, что вы называете класс таким же, как файл, поэтому Rails находит его автоматически!)
Тогда в вашем so_much. гь файл сделать:
class SoMuch
include ActiveModel::Model #This gives us rails validations & model helpers
attr_accessor :visual_title
attr_accessor :visual_cover #These are virtual attributes so you can make as many as needed to handle all of your form fields. Obviously these aren't tied to a database table so we'll run our validations and then save them to their proper models as needed below!
#Add whatever other form fields youll have
validate :some_validator_i_made
def initialize(params={})
self.visual_title = params[:visual_title]
self.visual_cover = params[:visual_cover]
#Assign whatever fields you added here
end
def some_validator_i_made
if self.visual_title.blank?
errors.add(:visual_title, "This can't be blank!")
end
end
end
Теперь вы можете перейти в контроллер, обрабатывающего эту форму и сделать что-то вроде:
def new
@so_much = SoMuch.new
end
def create
user_input = SoMuch.new(form_params)
if user_input.valid? #This runs our validations before we try to save
#Save the params to their appropriate models
else
@errors = user_input.errors
end
end
private
def form_params
params.require(@so_much).permit(all your virtual attributes we just made here)
end
Затем на ваш взгляд, вы бы установить form_for с @so_much
как:
<%= form_for @so_much do %>
whatever virtual attributes etc
<% end %>
Form Модель немного продвинулся в Rails, но жизнь заставка, когда дело доходит до больших приложений, где у вас есть много различных типов форм для одной модели, и вы не хотите, чтобы все помехи.
Да, Rails отлично подходит для этого. 'accepts_nested_attributes_for' - это то, что вам нужно читать. – Swards
Обратитесь к руководству по направляющим для создания сложных форм [http://guides.rubyonrails.org/form_helpers.html#building-complex-forms] – johnnynemonic