2013-10-16 29 views
1

我正在使用每個循環來將我的評論模型的驗證錯誤輸出到簡單的JSON鍵值對中。我面對的問題是,在最後一個字符串之後我不能有一個尾隨逗號,因爲jQuery不喜歡狡猾的JSON。上述確定紅寶石循環中json鍵/值需要逗號嗎?

{ 
<% @comment.errors.each do |field, msg| %> 
    "<%= field.downcase %>": "<%= msg %>", 
<% end %> 
} 

代碼輸出很好,但它會逗號添加到最後"<%= msg %>"這會導致JSON時,它的解析失敗。

我試過使用.each_with_index,但我不能讓它與|field, msg, index|一起工作 - 所以除非你知道如何讓它工作,否則它就無法工作。

回答

3

您可以使用mapjoin

<%= @comment.errors.map{|k,v| "'#{k.downcase}' : '#{msg}'"}.join(",") %> 

但不會簡單地@comments.errors.to_json工作?

PS:爲了使each_with_index:工作與哈希:

hash.each_with_index do |(key,value), index| 
    #code code 
end 
+1

'@ comments.errors.to_json'作品。 – khustochka

+0

感謝tihom,是的,我可以使用'@ comment.errors.to_json',但是在這個JSON輸出中存在與'@ comment'實例無關的自定義字符串。 –

+0

也感謝each_with_index上的提示,非常方便。 –