使用 Mobility 从 Rails 项目中的模型中删除单个翻译
Deleting a single translation from a model in a Rails project using Mobility
我正在将 Rails 项目从 Globalize 迁移到 Mobility。使用 Globalize,我可以通过 translation
方法访问当前翻译:
feature.translation
我主要在管理模型的翻译以删除特定翻译时使用它:
feature.translation.destroy
使用 Globalize,对于每个对象,我获取翻译列表并为每个对象创建一个删除按钮:
<%= link_to 'x', admin_feature_path(list_item, translation_locale: l), method: :delete, data: { confirm: %(Are you sure you want to delete this #{humanize_locale l} translation? This cannot be undone.) } %>
我使用通过 link 传入的语言环境来删除相应的翻译:
Mobility.with_locale(translation_locale) do
@feature.tranlsation.destroy
end
是否有直接的方法从具有多个翻译的模型中删除单个翻译?
这里的 Mobility 真的没有什么特别之处。您有一个关联 translations
的模型,每个 translation
都有一个 locale
.
所以要销毁翻译,你可以找到它并销毁它:
translation = feature.translations.find { |t| t.locale == Mobility.locale.to_s }
translation.destroy
如果您想要像 Globalize 那样的方法,只需将其添加到您的模型中即可:
def translation
translations.find { |t| t.locale == Mobility.locale.to_s }
end
就是这样!
我正在将 Rails 项目从 Globalize 迁移到 Mobility。使用 Globalize,我可以通过 translation
方法访问当前翻译:
feature.translation
我主要在管理模型的翻译以删除特定翻译时使用它:
feature.translation.destroy
使用 Globalize,对于每个对象,我获取翻译列表并为每个对象创建一个删除按钮:
<%= link_to 'x', admin_feature_path(list_item, translation_locale: l), method: :delete, data: { confirm: %(Are you sure you want to delete this #{humanize_locale l} translation? This cannot be undone.) } %>
我使用通过 link 传入的语言环境来删除相应的翻译:
Mobility.with_locale(translation_locale) do
@feature.tranlsation.destroy
end
是否有直接的方法从具有多个翻译的模型中删除单个翻译?
这里的 Mobility 真的没有什么特别之处。您有一个关联 translations
的模型,每个 translation
都有一个 locale
.
所以要销毁翻译,你可以找到它并销毁它:
translation = feature.translations.find { |t| t.locale == Mobility.locale.to_s }
translation.destroy
如果您想要像 Globalize 那样的方法,只需将其添加到您的模型中即可:
def translation
translations.find { |t| t.locale == Mobility.locale.to_s }
end
就是这样!