这是一种在铁路上创建运输选项的干净方法吗



我对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_PRICEOrder::FAST_SHIPPING_PRICE而不是硬编码运输价格。

使用这种方法,您将在一个地方拥有所有订单运输设置,因此当您想要更改某些内容时,不需要查看太多文件。

最新更新