3
serialize方法允許像哈希這樣的對象作爲YAML字符串存儲在數據庫中。然而,我最近發現自己希望有一個文本字段允許用戶輸入他們自己的字符串,並讓控制器創建一個與該字符串相關的散列。從文本字段中檢索YAML
<%= f.text_field :yaml, :value => '--- \nlast_name: Smith\nfirst_name: Joe\n' %>
是的,我想要單引號:我想在顯示中保留\ n。但問題是,作爲一個結果,結果字符串對象被轉義:
--- \\nlast_name: Smith\\nfirst_name: Joe\\n
我運行通過兩個正則表達式的字符串:第一個替換一個反斜槓的雙反斜線。然後接下來將\ n(兩個字符)轉換爲\ n(特殊單個字符)。
所以在我的控制器:
yhash = YAML.load(params[:form][:yaml].gsub(/\\\\/, "\\").gsub(/\\n/, "\n"))
現在這工作,但似乎非常令人費解。有沒有更優雅的方式讓用戶提交yaml?
你能更簡潔地重述嗎? – 2011-01-21 21:07:39