我正在尝试在视图上显示国家/地区名称。我有一个带有 country_id 的 User 模型,它属于_to :countries。我有一个带有 id、iso 和 name 的 Country 模型,它有很多:users。
这就是我在控制器中用于显示视图的内容:@user = User.find(params[:id])
我认为通过这种关系设置,我可以执行 user.country.name 或 user.countries.name 并获取国家名称。但是,无论是在视图中还是在用户控制器中,我都会收到以下错误。我是否将用户、国家或国家/地区大写都没有关系。
失败/错误:click_button“保存更改”ActionView::Template::Error: #<#:0x007fb9548a7ae0> 的未定义局部变量或方法“用户”
我想我会在视图中尝试这个:Country.find(@user.country_id).name
这在 Rails 控制台中按预期工作。它显示了我想要名称的正确国家/地区 ID 值。正如我在 Rails 控制台中执行此命令时所说,我得到了正确的值。在控制台中,我首先像在控制器中一样分配了@user。之后我执行 Country.find 命令。但是在视图中,我在 Country.find 命令中收到以下错误:
失败/错误:click_button“保存更改”ActionView::Template::Error: 找不到 id=1 的国家/地区
当我显示值时,它看起来像这样:
#<Country:0x007ffd6bf9ac20>
当我创建一个设置为 Country.find 命令的实例变量 @country_name 时,我得到了同样的错误。我迷路了,因为美国记录在 Country 中的 id = 1 并且我可以在 Rails 控制台中找到它。
我检查了网络,包括 Stack Overflow。关于显示来自两个模型的信息的类似问题在这里被问了很多次。除了我尝试过但无法开始工作的两个选项外,他们还没有得到答复。一旦我能得到这个工作,我可能会为此创建一个用户助手。