У меня есть приложение для рельсов, в котором у меня есть поле с множественным выбором как таковое
= section.collection_select(:room_ids, @rooms, :id, :location, {prompt:false}, {multiple: true, class: 'form-control list2' , required: true })
= section.submit "", class: "save-btn"
В моем контроллере разделов я хочу создать массив из всех нескольких элементов, выбранных из поля выбора
Я пробую что-то вроде
class SectionsController < InheritedResources::Base
respond_to :html,:js
before_action :get_rooms, only: [:edit,:new]
def create
room_ids = params[:room_ids]
if room_ids.count > 20
flash[:error] = "Too many rooms selected"
redirect_to sections_path
else
create! { sections_path }
end
end
def update
update! { sections_path }
end
protected
def permitted_params
params.permit(section: [:name, :section_time, :credits, room_ids: []])
end
def get_rooms
@unassigned_rooms = Room.left_outer_joins(:section).where("rooms.section_id IS ?", nil).order('rooms.location asc').all.map{ |room| [ room.location, room.id, { credit: room.credit } ] }
@rooms = @section.rooms
end
end
Но это не работает и дает мне ошибку, в которой говорится
undefined local variable or method `room_id' for #<SectionsController:0x007fc4ca7808c0> Did you mean? room_url
Я попытался изменить имя collection_select на room_ids[], но это не помогло, либо выдает ошибку, говоря
wrong number of arguments (given 0, expected 1..2)
Я в основном пытаюсь сделать, это пользователь создает раздел из нескольких комнат, выбирая комнаты из поля выбора, но пользователь может назначить только 20 комнат на раздел
Может ли кто-нибудь подсказать мне, что я делаю не так, или другую альтернативу, которую я могу попробовать?



Вы создаете неожиданное имя поля с помощью room_id[] = ...
Вы должны делать ...
room_ids = params[:room_ids]
if room_ids.count > 20
Хорошо, добавьте gem 'pry' в свою группу разработки в вашем Gemfile, затем установите первую строку вашего метода create как binding.pry и запустите в разработке. Когда сервер останавливается, введите params, чтобы увидеть, как выглядят ваши параметры, и проверить, есть ли у вас params[:room_ids].
Я тоже пробовал это, но это дает мне эту ошибку
undefined methodcount 'for nil: NilClass` @SteveTurczyn