我对ROR不是很有经验,这是在rails应用程序中创建运输选项的一种干净方法吗?
刚刚在我的订单中添加了这个代码form:
<% if @order.subtotal >= 30 %>
(free shipping)
<%= f.radio_button(:shipping, "0.00", :checked => "checked", class: "hidden_field") %><br/>
<% else %>
<p><strong>Shipping options :</strong></p>
<%= f.label 'economy' %>
<%= f.radio_button(:shipping, "3.00", :checked => "checked") %><br/>
<%= f.label 'fast' %>
<%= f.radio_button(:shipping, "5.00") %>
<% end %>
我觉得这太简单了,不可能是正确的。
一切都很好,但最好将所有这些逻辑保留在模型中,而不是视图中。类似这样的东西:
# order.rb
class Order < ActiveRecord::Base
FREE_SHIPPING_THRESHOLD = 30.0
ECONOMY_SHIPPING_PRICE = 3.0
FAST_SHIPPING_PRICE = 5.0
...
def eligible_for_free_shipping?
subtotal >= FREE_SHIPPING_THRESHOLD
end
end
然后<% if @order.subtotal >= 30 %>
变成<% if @order.eligible_for_free_shipping? %>
,并且在视图中使用Order::ECONOMY_SHIPPING_PRICE
和Order::FAST_SHIPPING_PRICE
而不是硬编码运输价格。
使用这种方法,您将在一个地方拥有所有订单运输设置,因此当您想要更改某些内容时,不需要查看太多文件。