我我JS送這個給導軌:將JavaScript數組轉換爲哈希的Rails?
[{name: "Jon"}, {name: "Jane"}]
我想到的Rails/Ruby來它解釋成相同的結構,而是它把它轉換成一個像這樣的哈希:
{ "0" => {"name" => "Jon"}, "1" => {"name" => "Jane"} }
任何想法爲什麼會發生這種情況,或者如何預防它?
我我JS送這個給導軌:將JavaScript數組轉換爲哈希的Rails?
[{name: "Jon"}, {name: "Jane"}]
我想到的Rails/Ruby來它解釋成相同的結構,而是它把它轉換成一個像這樣的哈希:
{ "0" => {"name" => "Jon"}, "1" => {"name" => "Jane"} }
任何想法爲什麼會發生這種情況,或者如何預防它?
你實際上並沒有發送[{name: "Jon"}, {name: "Jane"}]
,你發送的是"[{name: "Jon"}, {name: "Jane"}]"
,所以rails必須將它轉換成某種東西,否則你會用一些凌亂的正則表達式來獲得你想要的數據。所以導軌將它轉換爲HashWithIndifferentAccess Object給你。我非常懷疑你想攻擊rails內部,那麼爲什麼不直接用rails的方式解析你的代碼而不是強迫它成爲另一種格式呢?
這是一個正確的行爲。如果您有興趣將Array作爲參數發送,則必須使用some_field_name[]
類型的字段,而不是javascript中的簡單「field_name」。
在這種特殊情況下,在hash上調用'values'方法。 –