几个月前我创建了数组来处理用户配置文件详细信息的编辑。当显示用户注册的国家/地区时,我点击数组并使用数据库中存储的整数获得我想要的结果。
在我的用户模型中,我将国家/地区的完整列表存储在一个数组中:
# encoding: UTF-8
class User < ActiveRecord::Base
COUNTRY_AND_ISO_CODE = [
['Any', nil],
['United Kingdom', 826],
['United States', 840],
['-----------', ' '],
['Afghanistan', 4],
['Ãland Islands', 248],
['Albania', 8],
['Algeria', 12],
['American Samoa', 16],
['Andorra', 20],
['Angola', 24],
['Anguilla', 660],
['Antarctica', 10],
['Antigua and Barbuda', 28],
['Argentina', 32],
['Armenia', 51],
['Aruba', 533],
把这个放在我看来:
= User::COUNTRY_AND_ISO_CODE[@profile.country].first
在我的视图中显示此结果,例如:
United Kingdom
我遇到的问题是大型国家/地区阵列。对于某些配置文件,它似乎有效,但大多数我收到此错误:
undefined method `first' for nil:NilClass
我知道每个配置文件的@profile.country 都不是零,所以不确定这个错误来自哪里。如果我删除对数组的调用并且在我的视图中只有 @profile.country 它会按预期显示存储的整数。
我的其他数组没有遇到这个问题。例如,军事状态、性别、性取向。所以我想知道这是否与数组和内存的大小有关?我不知道这就是我问的原因。
我即将采取另一条路线,该路线在我提出的另一个问题中提出,方法是创建另一个存储国家名称的表,并使用存储在配置文件表中的整数从国家/地区表中获取正确的国家/地区。我想避免这种情况,因为当我最初有 1 次调用时,这是对 db 的 2 次调用。
知道我当前的代码有什么问题吗?我不明白为什么它适用于某些配置文件而不适用于其他配置文件。我不需要检查存储的国家整数,因为我创建了一个用国家更新每个用户的 rake 任务。
其他问题:如何在 ruby on rails 中显示选择字段值而不是它们关联的存储整数?
希望你能帮忙
另外,如果你标记我,请给出一个理由。我来这里是为了从我的错误中吸取教训,也许我的错误可以帮助其他遇到类似问题的人。
亲切的问候