Я надеюсь, что кто-то может помочь мне в лучшем способе сделать это. Я настраиваю на форму регистрации для людей, чтобы перечислить свои навыки/полномочия в различных работахСоздание динамической формы и модели на основе ввода пользователя
схемы вдоль этих линий с использованием Mongoid и наследования
class Person
include Mongoid::Document
field :name, :type => String
field :education, :type => String
end
class Accountant < Person
field :cpa, :type => Boolean
field :active_cpa, :type => Boolean
end
class SoftwareDeveloper < Person
field :full_stack, :type => Boolean
field :language, :type => Array
end
Таким образом, пользователи будут приходить на страницу регистрации MySITE .com/people/new, где будет форма для выбора различных заданий (перечисленных и сгруппированных по различным отраслям: финансы, инженерия, маркетинг) и на основе выбора пользователя, более подробное представление будет отображаться специально для этой функции работы , (например, разработчики программного обеспечения могут перечислить языки программирования, а бухгалтеры могут указать, есть ли у них CPA).
Мой вопрос: какой лучший способ справиться с этим на уровне контроллера и просмотра? Есть около 100 различных функций работы, которые я охватываю, поэтому я хотел бы комбинировать контроллер и просмотр вместо перенаправления пользователей на mysite.com/accountants/new или mysite.com/engineers/new и иметь контроллер/представление для каждого конкретной работы.
Может кто-нибудь, пожалуйста, поможет мне лучше всего подойти к этому? Я знаю, что мне придется использовать jQuery и, возможно, некоторые вызовы ajax для отображения подробных форм, но что мне делать с контроллером, потому что form_for сначала привязан к пользователям, а модель имеет ограниченные атрибуты, поэтому я не уверен, как получить параметры и передать их в params хэш с проверками для более конкретных заданий
Спасибо за это. Это было очень полезно. Я провожу в эти выходные, пытаясь реализовать это в своем коде. Не могли бы вы привести мне пример метода .change(), который вы упомянули? Я не уверен, должен ли я иметь форму, загружающую все различные поля для каждого типа job_type, или просто иметь базу и добавлять определенные поля на основе выбранного типа job_type. В любом случае, спасибо за вашу помощь до сих пор! –
Да, я могу обновить ответ с помощью метода изменения примера. Одна вещь, которую вы можете сделать в методе .change, - это динамическая загрузка набора полей для выбранного типа задания с сервера. Некоторые люди выступают за AJAX, используя JSON, и это нормально. Но в таких случаях вы хотите, чтобы ваши отрывки формы были готовы к форматированию, загружаемым с сервера. Таким образом, у вас есть все ваши макеты, сделанные на стороне сервера в ERB или что-то еще, и вам не нужно возиться в javascript, создавая поля формы из JSON и т. Д. – OzBandit
Возможно, вы захотите проверить, является ли 'params [: job_type]' авторизованное значение перед передачей его в '.constantize.new', чтобы избежать выполнения произвольного кода. – ybart