2011-01-21 25 views
-2

嗨 我想在一個頁面中使用兩個參數哈希使用兩種不同的PARAMS散列如何在一個頁面(Rails)的

此頁的工作很簡單,它是一個編輯頁面,我希望它一旦編輯作業完成,就會向服務器發送通知。

def update 
     @description = Tempdescription.find(params[:id]) 
    @description.update_attributes(params[:tempdescription]) 
     sendnotification  
end 

def sendnotification 
     params[:to_ids]="xxxx" 
     sig = hash_params(params); 
     params[:sig] = sig 
    response = RestClient.post "http://api.xxxx.com/restserver.do", params, :content_type => :json, :accept => :json 
     render :text=>response 
end 

def hash_params(params) 
     params = Hash[*params.sort.flatten] 
    payload = '' 
    params.sort.each do |pair| 
     key, value = pair 
    payload = payload + "#{key}=#{value}" 
    end 
    return Digest::MD5.hexdigest(payload + API_SECRET) 
end 

不足爲奇還包括PARAMS用於更新

和服務器在sendNotification的所述PARAMS返回104錯誤

因此, 我試圖

new_params=Hash[] 

並使用new_params取代老PARAMS在sendNotification的

但隨後軌抱怨

undefined method `<=>' for :session_key:Symbol 
app/controllers/tempdescriptions_controller.rb:72:in `<=>' 
    app/controllers/tempdescriptions_controller.rb:72:in `sort' 
    app/controllers/tempdescriptions_controller.rb:72:in `hash_params' 
    app/controllers/tempdescriptions_controller.rb:45:in `sendnotification' 

所以我想,如果有什麼辦法可以創造另一個PARAMS?

在此先感謝

+1

你做錯了很多事情,很難知道從哪裏開始:( – 2011-01-21 20:08:12

+1

那麼,你的解決方案是什麼;)我認爲有一些事情是錯誤的。 – Blender 2011-01-21 20:10:03

+0

這將會是一個容易得多,如果你刪除的標籤,或至少使用它們始終如一地閱讀你的代碼。紅寶石普遍接受的慣例是縮進兩個空格。另外,您在操作員之間使用空間也是一團糟。 – noodl 2011-01-21 20:12:01

回答

1

好了,說完抱怨您的格式我想我應該冒險在你的問題的一種嘗試。

此代碼:

def hash_params(params) 
    params = Hash[*params.sort.flatten] 
    payload = '' 
    params.sort.each do |pair| 
    key, value = pair 
    payload = payload + "#{key}=#{value}" 
    end 
    return Digest::MD5.hexdigest(payload + API_SECRET) 
end 

..似乎接受一個哈希作爲它的參數,然後用排序鍵重新創建它。大概這個代碼是針對Ruby 1.9,否則這將是毫無意義的。然後,我再次將分類爲,因爲我無法在加入密鑰和值之前確定=,但未將其與&分開。

的錯誤是有點神祕,雖然;我用ruby 1.9排序符號沒有問題。也許你正在運行紅寶石1.8?

0

好吧......與導軌控制檯玩了一會兒後,我終於找到了解決這個問題。

在sendNotification的方法,我創建了一個新的哈希

p=Hash[] 

但簡單地把這將無法工作,正如我前面提到。 後來我改變了所有 P [:鍵] 到 P [ 「鑰匙」] 和它的作品。

顯然如果散列是新創建的,但是散列使用hash [:key]則不起作用,但它適用於params,這讓我感到困惑,並且讓我相信params和正常散列之間存在差異。

我使用Ruby 1.8.7所以我認爲這可能只是這個版本的bug。

相關問題