Новичок - Rails View Расчет - onchange? - PullRequest
1 голос
/ 27 января 2010

Я довольно новичок в Ruby on Rails и что нужно сделать, чтобы я встал на правую ногу. Я хочу сделать несколько простых «живых расчетов» и не уверен в лучшем методе. Если мы используем пример поваренной книги.

В каждом рецепте много ингредиентов. У каждого ингредиента есть описание, количество, стоимость и общее количество.

Что я хочу сделать, это следующее; 1) ингредиент. Итого = ингредиент. Количество х ингредиент. Стоимость 2) recipe.grand_total = components.sum (всего)

Каждый раз, когда пользователь меняет значения в component.qty или attribute.cost, я хочу обновить итоги.

Чего я не знаю, так это как и где это сделать: (

Любая помощь будет отличной:)

Заранее спасибо, Neil

Ответы [ 2 ]

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

Возился и пока придумал это объяснение, собранное из разных мест, поэтому думал, что поделюсь.

<tr class="recipe_item">
  <td><%= f.text_field :ingredient %></td>
  <td><%= f.text_field :quantity, :class => "quantity", :onblur => "this.up('.recipe_item').down('.total').value = (parseInt(this.value) * parseInt(this.up('.recipe_item').down('.cost').value)) ;" %></td>
  <td><%= f.text_field :cost, :class => "cost", :onblur => "this.up('.recipe_item').down('.total').value =  parseInt(this.up('.recipe_item').down('.quantity').value) * (parseInt(this.value)) ;" %></td>
  <td><%= f.text_field :total, :class => "total", :readonly => true %></td>
</tr>

Не уверен, насколько это эффективно, но, похоже, это работает, по крайней мере, для первого шага. Следующая вещь - найти способ суммировать все пункты рецепта к общему итогу. Кто-нибудь получил какие-либо комментарии или идеи? Спасибо Neil

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

Я думаю, вам нужно было бы сделать это с помощью javascript, используя onChange или, возможно, наблюдаемое поле в двух вышеупомянутых полях.

Когда один из них будет обновлен, JavaScript вызовет ваш бит кода, который будет выполнять вычисления.

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