2015-11-23 4 views
0

У меня есть модель Rails, называемая request_form. В форме у меня есть несколько ящиков, которые можно выбрать, похожие на «Что мы можем сделать для вас» на следующем сайте? http://mostlyserious.io/get-started/Несколько входных форм для одного и того же поля

У меня есть поле под названием number_of_guests, которое может быть несколькими значениями в зависимости от того, какой раздел щелчок. Я планирую использовать javascript для захвата значения элемента clicked и назначения его параметру request_no_of_guest. Тем не менее, в форме я имею то же самое поле, сделанное 5 раз для каждого выбора. Каков наилучший способ? Есть ли лучший способ справиться с этим? Я подумал о создании метода контроллера, который перебирает каждый экземпляр этого параметра request_no_of_guests и определяет, какой экземпляр заполняется, а затем отправляет его.

Это лучший способ справиться с этим делом?

+0

за то, что он очень запутан, у вас есть флажки справа? и вы хотите получить значения, которые пользователь выбирает? добавьте конкретный вариант использования, потому что он запутан, иначе я не могу вам помочь ... – SsouLlesS

ответ

1

Ну, как вы не указали какую-либо полезную деталь, я отвечу, когда я понял вопрос.

Давайте посмотрим, как это может выглядеть. Чтобы сделать это, мы представим демо-приложение, в которое вы можете ввести имя профессора и выбрать их различные области знаний.

Профессор имеет поле expertise, которое является строкой.

Форма может быть следующим:

<%= label_tag 'expertise_physics', 'Physics' %> 
<%= check_box_tag 'professor[expertise][]', 'Physics', checked('Physics'), id: 'expertise_physics' %> 

<%= label_tag 'expertise_maths', 'Maths' %> 
<%= check_box_tag 'professor[expertise][]', 'Maths', checked('Maths'), id: 'expertise_maths' %> 

изменить app/controllers/professors_controller.rb

от

params.require(:professor).permit(:name, :expertise) 

к

params.require(:professor).permit(:name, expertise:[]) 

Затем в app/models/professor.rb

before_save do 
    self.expertise.gsub!(/[\[\]\"]/, "") if attribute_present?("expertise") 
end 

и /app/helpers/professors_helper.rb

def checked(area) 
    @professor.expertise.nil? ? false : @professor.expertise.match(area) 
end 

Таким образом, вы можете получить различные значения, выбранные в форме в атрибуте expertise, однако это не рекомендуется, если вы планируете запросить выбранные опции. Правильный путь - создать новую модель под названием Expertise, а затем создать отношения профессора has_many expertises.

Но если вы ищете что-то простое, используйте приведенный выше код.

Смежные вопросы