2013-03-14 72 views
6

我有一個Photo類,它有一個「name」屬性和一個「tags」屬性。我的目標是在Rails中實現一個更新功能,用輸入的內容替換照片的標籤。例如,如果我嘗試將「標籤」設置爲[]的JSON對象放入,我希望從照片中清除任何標籤。如何通過HTTParty通過PUT請求發送空數組?

但是,當我通過HTTParty提交一個空數組作爲主體參數之一時,我相信HTTParty正在將[]轉換爲nil。因此,我的Rails後端上的照片#更新端點沒有收到參數「標籤」的任何內容。我正在尋找一種方法讓HTTParty不會將[]轉換爲零,因爲我失去了從照片中刪除標籤的能力。

+0

了這所有的解決呢?我遇到了同樣的問題。 – Nate 2016-04-22 18:45:29

回答

-1

只是分配空數組參數,可以爲例如:[:相片] [:標籤]尚未設置,

params[:photo][:tags] ||= [] 

如果PARAMS它將分配空數組。如果它不起作用,這意味着你必須調整鍵,例如也許你沒有:tags,但是:tag_ids,那麼你將不得不編寫params [:photo] [:tags]。只要檢查一下你的HTML結構(你可以隨時粘貼在這裏,我可以幫你)。據我所知這是標準方法:)

+0

問題是如何繞過空數組的httparty轉換爲零參數。 – Mohanraj 2014-05-06 11:25:34

+0

@Mohanraj這就是你如何處理這個問題。如果沒有發送任何內容[即''nil''而不是空數組],則只需手動設置即可。對不起,這並不能滿足您的需求,但我相信這是正確的答案(或者說:解決方法)。 – mkk 2014-05-06 14:49:16

+0

不,當我們設定 params [:photo] [:tags] || = [] 在httparty請求中,絕對我沒有收到params [:photo] [:tags] => nil。 – Mohanraj 2014-05-06 17:52:38

1

這是Rails 4中的一個bug /功能,你可以閱讀更多關於該劇在:https://github.com/rails/rails/issues/13420

選項包括:

  • 一次性破解類似於@ MKK的回答
  • 升級到Rails的5
  • 禁用deep_munge無處不在,處理的那後果:

>

# config/application.rb 
config.action_dispatch.perform_deep_munge = false 
+0

P.S.澄清 - 這對於HTTParty來說並不是真正的問題,出於安全原因,這是您的Rails後端將'']'轉換爲'nil'的問題。 – Meekohi 2017-01-31 21:01:57