gpt4 book ai didi

ruby-on-rails - 如何使用 Ruby 2.5.3 从数组中删除字符串?

转载 作者:太空宇宙 更新时间:2023-11-03 17:06:25 25 4
gpt4 key购买 nike

我在 Ruby on Rails 5.2 上开发。为了管理翻译,我希望允许用户选择一种不同于他当前语言的语言。应用程序的配置语言列表是

 all_languages = I18n.config.available_locales

all_languages 是一个数组。 puts all_languages 返回:

en fr de it

用户语言在用户表中定义。一个方法返回当前用户的语言

user_language = current_user.language

user_language 是一个字符串。 puts user_language 返回:

en

我尝试将 delete(obj) 方法应用于数组,但这不会改变数组:

all_languages.delete(user_language)

我尝试只处理数组,但它仍然不会改变语言数组:

remove_language = Array.new
remove_language << user_language

puts remove_language 返回:

en

puts all_languages - remove_language 返回:

en fr de it

应该删除 en 语言的地方。我不明白为什么它会保留在列表中!

最佳答案

I18n.config.available_locales 返回符号 *。而您的 current_user.language 是一个字符串。 "en":en 完全不同。也就是说,这应该有效:

all_languages = I18n.config.available_locales.dup # copy the array
all_languages.delete(:en)
# or, for your case
all_languages.delete(current_user.language.to_sym)


# non-mutating way
all_langs_without_en = I18n.config.available_locales.reject { |loc| loc == :en }

* 至少在 rails 4.2 中,我在其中检查过。

关于ruby-on-rails - 如何使用 Ruby 2.5.3 从数组中删除字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53552565/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com