在 rails 中创建运输选项是一种干净的方法吗?

is it a clean way to create shipping options in rails?

我对 ROR 不是很有经验,这是在 rails 应用程序中创建运输选项的简洁方法吗?

刚刚在我的 orders_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.

通过这种方法,您可以将所有订单发货设置集中在一个地方,因此当您想要更改某些内容时,无需浏览许多文件。