|   |      1 
                                  5
                             这个代码对我来说很好 国 列。 在我的模型上:- 格式为:-  | 
|   |      2 
                                  0
                             你的问题还不够,有些地方应该出错。 第一 
   在这种方法中,你应该明确
    
   第二
    更新: 
   您有一个字符串的country列。
使命感
    
   我不知道你期望什么。
    
   如果您在国家栏中有国家名称,而不是ISO代码。使用
     | 
|   |      3 
                                  0
                             看起来答案将是你之前尝试的某种组合。 Country_select使用国家代码而不是国家全名: 这显示在该宝石的github页面上: https://github.com/stefanpenner/country_select 由于select返回国家代码,因此我们可以假设国家属性将是国家代码而不是完整的国家名称。 考虑到这一点,我们将修改前面的答案: 最好的做法是避免创建与该模型中的属性同名的变量,所以在测试中使用iso_country而不是country。 您遇到的问题是,当您将ISO3166::Country对象指定给对象的属性(self.Country=ISO3166::Country[Country])时,并不是将ISO3166::County对象本身指定给该属性,而是将ISO3166::Countary对象的名称指定给它。 我在Rails控制台中测试了这一点: 如您所见,它为属性指定了国家名称(而不是国家对象)。因此,当您尝试访问国家时。翻译或国家。name将抛出一个错误,因为它正在访问address属性而不是country对象。所以一定要保持变量名与属性名不同。 最后一件事,如果您有国家名称,那么使用find_country_by_name方法代替find_by_name,因为find_byname将返回一个数组,而find_cuntry_by-name将返回country对象。这在您当前的场景中不应该是必需的,但是如果您以后需要使用它,请记住这一点。 |