Когда я вызываю рендер на странице index.html.erb, то вылазит эта ошибка
Когда вызываю только на странице new.html.erb то ошибки нет и переменная не пустая.
За что я люблю Rails так это за подробный лог ошибок.
Вам же написано: First argument in form cannot contain nil or be empty
Значит переменная @product у вас пустая.
Почему? Возможно вы не создали её в контроллере, это уже вам виднее.
Можете попробовать так: <%= form_for(Product.new) do |f| %>
Если вы заметили то у меня получается два вывода. Один вывод если включен джаваскрипт делается в модальном окне, другой вывод делается в простом окне, если JS выключен. Так вот, формы абсолютно идентичны, и если я рендерю форму не в модальном окне , а также как и при выключеном JS, то все работает. Точнее если я вызываю рендеринг формы не на этой странице, а на странице new.html.erb таким кодом:
Максим Череватов: Извините но из вашего листинга не совсем понятно что происходит, как вам написали выше оформите что это за файлы, приходиться догадываться. Плюс не плохо было бы код контроллера.
Андрей Андреев: изменил тело вопроса. Ну не могу я понять, почему переменная пуста только когда я рендерю форму на странице index.html.erb, но когда на new.html.erb, то все работает как нужно.
Если вы заметили то у меня получается два вывода. Один вывод если включен джаваскрипт делается в модальном окне, другой вывод делается в простом окне, если JS выключен. Так вот, формы абсолютно идентичны, и если я рендерю форму не в модальном окне , а также как и при выключеном JS, то все работает. Точнее если я вызываю рендеринг формы не на этой странице, а на странице new.html.erb таким кодом:
ниче не понятно что ты спрашиваешь, понятно только то что @ product у тебя не nil или пустой
Объясню что вижу я:
Я вижу некую страницу (хз как оно называется, если вы приводите код который разбит по нескольким файлам, вы должны указывать имя файла перед листингом кода)
на этой некой странице идет верстка html и внутрь вставлен рендинг лайаута form (обычно это делается через render :partial=>'form' :locals => {.....} но т.к. у вас переменная @ product объявлена как переменная класса render и без partial locals должен отрабатывать.
далее я вижу код самой формы (видимо это содержимое файла _form.html.erb) и в ней форма выводится из переменной класса @ product
но у вас эта переменная или nil или пустая раз вылазит указанная ошибка.
А это значит что в контроллере эта переменная не объявлена
А то что окно модальное, не модальное - это никого не волнует, не нужно этим голову забивать ни мне ни себе. Код у вас рендерится на 1 странице а не на двух.
Еще я вижу что в первом листинге вы используете переменную @ products (множественное число, это логично ибо переменная содержит массив данных) а в форме выводите @ product (единственное число, тоже логично там должна содержаться модель Product.new).
И как вам уже и я и Андрей Андреев сказали - у вас эта переменная ПУСТА!
Shaks: изменил тело вопроса. Ну не могу я понять, почему переменная пуста только когда я рендерю форму на странице index.html.erb, но когда на new.html.erb, то все работает как нужно.