在 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_PRICE
和 Order::FAST_SHIPPING_PRICE
.
通过这种方法,您可以将所有订单发货设置集中在一个地方,因此当您想要更改某些内容时,无需浏览许多文件。
我对 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_PRICE
和 Order::FAST_SHIPPING_PRICE
.
通过这种方法,您可以将所有订单发货设置集中在一个地方,因此当您想要更改某些内容时,无需浏览许多文件。