簡體   English   中英

使用rails跟蹤更改 - “已更改?”

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM