Ruby on rails Rails无关表

Ruby on rails Rails无关表,ruby-on-rails,Ruby On Rails,我有一个客户表,它引用了一个国家/地区表。在插入客户机时,在下拉列表中向用户提供国家,从而在客户机表中插入国家的id。如何在客户端显示页面上显示国家名称而不是Id 我猜您的关联设置与下面类似,在这种情况下,您可以通过关联@client.country.name而不是@client.country\u id(我在这里对变量和字段名做一些假设) 将按以下方式设立协会: class Client < ActiveRecord::Base has_one :country ... e

我有一个客户表,它引用了一个国家/地区表。在插入客户机时,在下拉列表中向用户提供国家,从而在客户机表中插入国家的id。如何在客户端显示页面上显示国家名称而不是Id

我猜您的关联设置与下面类似,在这种情况下,您可以通过关联
@client.country.name
而不是
@client.country\u id
(我在这里对变量和字段名做一些假设)

将按以下方式设立协会:

class Client < ActiveRecord::Base

  has_one :country

  ...

end


class Country < ActiveRecord::Base

  belongs_to :client

  ...

end
class客户端
类似于

<%= select_tag 'country_id', options_from_collection_for_select(@countries, 'id', 'name') %>

但这并不完美,灌输包括一个数字。要去掉这个数字,您需要创建一个唯一的字符串,通常称为slug,然后按slug进行所有查找。

在处理select标记和数据库表时,我总是发现使用collection\u select更好

你可以用

collection_select :client, :country_id, Country.all, :id, :name

我把这个放进去了,它现在好像起作用了。这是正确的解决方案吗

<%= Country.find(@client.country_id).name %>


我在显示下拉列表时没有问题,我想在显示页面中显示名称而不是id。添加了一些关于将名称添加到url的基本代码,我想这就是您所说的。我在显示下拉列表时没有问题,我想在显示页面中显示一个名称而不是id。我在模型中添加了一个方法,因为我意识到我在很多地方都需要它。
<%= Country.find(@client.country_id).name %>