Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 使用rails跟踪更改-“;更改?“;_Ruby On Rails_Internationalization - Fatal编程技术网

Ruby on rails 使用rails跟踪更改-“;更改?“;

Ruby on rails 使用rails跟踪更改-“;更改?“;,ruby-on-rails,internationalization,Ruby On Rails,Internationalization,我正在使用RubyonRails构建一个多语言网站,其中的部分内容应该由用户生成,他们应该能够为所有语言创建不同版本的内容。语言支持由i18n gem处理 他们的部分内容是通过标记创建的 在我的数据库中,我保存了:object.content\u markdown\u en、object.content\u html\u en、object.content\u markdown\u sv、object.content\u html\u sv等等 现在,如果用户更改了内容,则应生成新的html。但

我正在使用RubyonRails构建一个多语言网站,其中的部分内容应该由用户生成,他们应该能够为所有语言创建不同版本的内容。语言支持由i18n gem处理

他们的部分内容是通过标记创建的

在我的数据库中,我保存了:object.content\u markdown\u en、object.content\u html\u en、object.content\u markdown\u sv、object.content\u html\u sv等等

现在,如果用户更改了内容,则应生成新的html。但是,如果他只对其中一种语言进行了更改,那么似乎没有必要为所有地区重新生成html

我想也许有办法用这样的东西

if object.content_markdown_[locale]_changed?
  generate_new_html
end
可以在所有可能的区域设置的循环中运行。但是我找不到任何好的方法来实现这一点。

您可以使用以下方法按名称调用方法:

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
}
但是,使用单独的翻译表可能是更好的方法。

如何:

[:en, :sv].each do |locale|
    if object.send("content_markdown_#{ locale }_changed?".to_sym)
        send("generate_new_#{ locale }_html".to_sym)
    end
end

另外,您用
{
开始块,但用
结束
关闭块