[英]Keeping track of changes using rails - “changed?”
我正在構建一個多語言網站,在rails上使用ruby,其中部分內容應該由用戶生成,並且他們應該能夠為所有語言創建不同版本的內容。 語言支持由i18n gem處理。
部分內容是使用Markdown通過http://daringfireball.net/projects/markdown/basics創建的。
在我的數據庫中,我為不同的語言環境保存:object.content_markdown_en,object.content_html_en,object.content_markdown_sv,object.content_html_sv等。
現在,如果用戶更改內容,則應生成新的html。 但是如果他只對其中一種語言進行了更改,那么似乎沒有必要為所有語言環境重新生成html。
我想可能有某種方法可以使用類似的東西
if object.content_markdown_[locale]_changed?
generate_new_html
end
可以在所有可能的語言環境的循環中運行。 但我找不到任何好辦法。
怎么樣:
[:en, :sv].each do |locale|
if object.send("content_markdown_#{ locale }_changed?".to_sym)
send("generate_new_#{ locale }_html".to_sym)
end
end
您可以按名稱使用send
來調用方法:
object.send("content_markdown_#{locale}_changed?".to_sym)
你的循環看起來像這樣:
%w(en sv).each { |locale|
if object.send("content_markdown_#{locale}_changed?".to_sym)
generate_new_html
end
}
但是,使用單獨的轉換表可能是更好的方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.