creatoroftheworld: action в вашем случае это ничто иное как просто переменная, которая хранит в себе какоето значение. А какое значение оно хранит и как называется эт решать исключительно Вам. Взять к примеру яндекс: _ttp://yandex.ru/search/?text=php%20variable- Здесь text это переменная, которая хранит в себе поисковый запрос. /search/ - это роут (своего рода логическая часть в коде которая работает с поисковыми запросами).
Как использовать это всё и что "разумней" передавать функцию или тыкать ифы или "както по другому" (а вариантов тьма) - это уже придет с опытом. Насколько я могу судить вы только начинаете, и пока не следует забегать в перед, пока твердо поймите основу основу.
creatoroftheworld: пока не попробуешь, не узнаешь :)
PS. Если это и весь ваш ответ на ajax запрос, а в somefile.php содержится еще какаято писанина после этого if'а, то после строки с echo лучше написать exit(); чтобы не выполнялся тот код который не нужен.
да. только это все надо делать в фоне )
т.е. пишешь скрипт, обычный, консольный. и запускаешь его кроном раз в 1-5-10 минут, и у тебя всегда будут актуальные данные.
Иван Украинцев: если брать в учёт только объявление переменных "в лоб" - то по сути ничем кроме возможной путаницы, всяких notice ошибок в шаблонах (мол переменная не объявлена) и тд. Для гавнокода это норма :)
А вот если взять в целом паттерн проектирования на пример MVC, то тут уже посерьезнее дела обстоят. Как я уже писал, его суть заключается как раз в том, чтобы в каждом месте вашего приложения у вас было только то, что нужно и ничего кроме. Модель отвечает тлько за работу с базой данных (включая валидацию и тд итп). Управление представлением и моделями занимается контроллер, а представлению вобще знать не нужно что где творится, ему нужно только высрать результат в браузер. В итоге вся логика разделена по своим полочкам (ведь мы хотим чтоб все было аккуратненько правильно, чтобы все было на своих местах, тогда и рефакторинг писать удобнее, и читать код удобнее). И если следовать этому паттерну, то всю логику нужно разделять между собой всегда, это позволит во первых вам без особого труда вернуться к собственной писанине спустя недели/месяцы а во вторых и третьим лицам - быстренько разобраться что к чему, и самое главное, писанина будет удобно расширяться и не будет никакой каши внутри.
ниче не понятно что ты спрашиваешь, понятно только то что @ product у тебя не nil или пустой
Объясню что вижу я:
Я вижу некую страницу (хз как оно называется, если вы приводите код который разбит по нескольким файлам, вы должны указывать имя файла перед листингом кода)
на этой некой странице идет верстка html и внутрь вставлен рендинг лайаута form (обычно это делается через render :partial=>'form' :locals => {.....} но т.к. у вас переменная @ product объявлена как переменная класса render и без partial locals должен отрабатывать.
далее я вижу код самой формы (видимо это содержимое файла _form.html.erb) и в ней форма выводится из переменной класса @ product
но у вас эта переменная или nil или пустая раз вылазит указанная ошибка.
А это значит что в контроллере эта переменная не объявлена
А то что окно модальное, не модальное - это никого не волнует, не нужно этим голову забивать ни мне ни себе. Код у вас рендерится на 1 странице а не на двух.
Еще я вижу что в первом листинге вы используете переменную @ products (множественное число, это логично ибо переменная содержит массив данных) а в форме выводите @ product (единственное число, тоже логично там должна содержаться модель Product.new).
И как вам уже и я и Андрей Андреев сказали - у вас эта переменная ПУСТА!
Как использовать это всё и что "разумней" передавать функцию или тыкать ифы или "както по другому" (а вариантов тьма) - это уже придет с опытом. Насколько я могу судить вы только начинаете, и пока не следует забегать в перед, пока твердо поймите основу основу.