Возился и пока придумал это объяснение, собранное из разных мест, поэтому думал, что поделюсь.
<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