仍然試圖解決這個難題。我在這裏有一個更完整的例子。該模型被稱爲PanOrder。Rails:在表單中動態顯示值
下面是我在/assets/javascripts/pan_orders.js:
function pans_total_cost()
{
var p;
var individual_price;
var n;
var pans;
p = document.getElementById("price_per_pan");
individual_price = p.value;
n = document.getElementById("number_of_pans");
pans = n.value;
if (pans > 0)
{
document.getElementById.html("pans_total").value = n * p;
}
}
...這裏就是我在我的/views/pan_orders/_form.html.erb
<%= form_for(@pan_order) do |f| %>
<% if @pan_order.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@pan_order.errors.count, "error") %> prohibited this pan_order from being saved:</h2>
<ul>
<% @pan_order.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<%= f.hidden_field :price_per_pan, :value => 300 %>
<%= f.hidden_field :extra_shipping, :value => 25 %>
<div class="field">
<%= select_tag :number_of_pans, options_for_select(pans_array)%>
</div>
<h3>Subtotal: <span id="pans_total"></span></h3>
<div class="field">
<%= check_box_tag :expedited_shipping, :checked => false, :onclick => "pans_total_cost()" %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
...這裏就是我在我的/helpers/pan_orders_helper.rb
module PanOrdersHelper
def pans_array
numbers = []
zero = ["0", 0]
one = ["1", 1]
two = ["2", 2]
three = ["3", 3]
four = ["4", 4]
five = ["5", 5]
numbers << zero << one << two << three << four << five
end
end
但是,當顯示的形式,我選擇從下拉列表中選擇1個或更多平底鍋,然後點擊複選框,「小計」後面不會顯示任何內容。
我用你的建議,我編輯你的答案後的結果我想你可以看到和批准,如果你能不看到它,我會發布到我原來的問題 – user1765002
我檢查了結果,並在這裏創建了一個測試:http://jsfiddle.net/japanick/CpFYy/我注意到你有一個check_bo x_tag,也是Javascript中的另一個錯字。在我的答案中查看更新後的代碼和其他文本。 – Nick
另請注意:$(「#price_per_pan」)不起作用,因爲Rails通過form_for呈現窗體元素名稱空間,因此您想要的字段實際上是$(「#pan_order_price_per_pan」)。答案已更新。 – Nick