2013-04-09 23 views
0

我想改變訂單金額根據訂單交貨時間,在我的Rails應用程序。對於這一點,我已經修改我order_controller像這樣:如果條件的時間範圍

class OrdersController < ApplicationController 
    before_filter :authenticate_user! 
    def process_order 
    @order = current_order 
    if (@order.delievery_time[(4i), (5i)].between?('22:00', '00:30')) 
     @order.total = @order.total + @@mnc 
    end 
    end 
    end 

在此,當用戶提交二○○○之間的交貨期0030hrs,「合計」字段應該是 (總=總+ 50)。這個總價值應該被提交。

但給'[(4i),(5i)]'錯誤的語法錯誤。

正如我在錯誤日誌中看到的,它顯示是這樣的:

"delievery_time(1i)"=>"2013", 
"delievery_time(2i)"=>"4", 
"delievery_time(3i)"=>"9", 
"delievery_time(4i)"=>"23", 
"delievery_time(5i)"=>"00", 

我感興趣的只有最後兩個值。如何獲得這項工作? 任何人都可以幫忙嗎?

+0

你需要在'delievery_time'值,顯然你現在不要。爲了避免混淆,我還建議您正確拼寫。另外,向符號添加數字是非感性的,您需要使用該屬性的*值*,而不是其名稱。 – 2013-04-09 16:12:26

+0

@DaveNewton ohk。得到它了。將檢查此。 – user2206724 2013-04-09 16:39:11

+0

@DaveNewton hey更新了問題。你能幫忙嗎? – user2206724 2013-04-09 17:08:45

回答

0

假設delivery_time是Time類(或類似的Rails TimeWithZone兼容),你可以訪問小時和分鐘這樣的:

delivery_time = Time.new(2013, 4, 9, 23, 00) 

puts delivery_time.hour #=> 23 
puts delivery_time.min #=> 0 
+0

puts delivery_time.hour不會提供任何東西,但<%= delivery_time%>打印2013-04-09 23:00:00 UTC – user2206724 2013-04-10 05:23:00

+0

如果'@ order.delivery_time'在控制器中沒有提供任何內容,但在視圖中顯示時間,則'@ order'的值在兩者之間必須不同。將它添加到你的視圖中:'<%= debug @order%>'。把它添加到你的控制器方法中:'puts @ order.to_yaml'。比較。我猜'current_order'不會返回你想要的值。在這裏分享更多的代碼,或者創建[gist](https://gist.github.com/)或[pastie](http://pastie.org/)或github回購,以便我們提供幫助。 – slothbear 2013-04-10 16:36:12

相關問題