Форма должна пересчитать цену заказа - PullRequest
0 голосов
/ 30 января 2010

У меня есть форма для создания нового заказа. Один заказ может включать несколько продуктов. У каждого товара есть цена. Цена заказа равна сумме цен на весь товар, включенный в него.

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

Идеи?

Ответы [ 2 ]

2 голосов
/ 30 января 2010

Используйте Javascript и событие onchange HTML в полях ввода количества.
Когда пользователь изменил количество, Javascript может обработать форму и рассчитать цену нового заказа. Javascript может рассчитать общую стоимость для ряда предметов, используя что-то вроде этого:

item_quantity = document.getElementById('item_quantity').value;
item_price = document.getElementById('item_price').value;
// Perform some chacks here, to see whether the input values are valid
item_total = item_price * item_quantity;

Сделайте это для всех ваших товаров и добавьте все значения item_total, чтобы получить общую стоимость заказа.

Выбрав удобные идентификаторы для полей цены и количества, вы можете легко зацикливать это и, таким образом, не зависеть от количества товаров в вашем заказе.

0 голосов
/ 30 января 2010

Поскольку вы используете ruby ​​на рельсах, я бы мог использовать наблюдателя, который мог бы проверять событие изменения значения ваших полей количества. Таким образом, вы бы держали логику вне поля зрения.

http://it.toolbox.com/blogs/database-geek/ror-passing-multiple-parameters-via-observe_field-18656

http://api.rubyonrails.org/classes/ActionView/Helpers/PrototypeHelper.html

Вы также можете просто дать своему пользователю кнопку количества обновлений, которая отправит форму тому же действию, так что если форма находится в new.html.erb, то нажатие кнопки вызовет новое действие и перенаправит его обратно на та же страница, но вы можете обновить общее количество в контроллере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...