0

我有引用国家/地区表的客户表。插入客户端时,国家/地区会在下拉列表中提供给用户,从而在客户端表中插入国家/地区的 ID。您如何在客户端显示页面上显示国家/地区名称而不是 Id。

4

4 回答 4

0

我猜您的关联设置类似于下面,在这种情况下,您可以通过关联@client.country.name而不是@client.country_id(我在这里对变量和字段名称做出一些假设)来引用国家/地区名称。

协会将建立如下:

class Client < ActiveRecord::Base

  has_one :country

  ...

end


class Country < ActiveRecord::Base

  belongs_to :client

  ...

end
于 2013-01-29T01:25:08.093 回答
0

就像是...

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

http://apidock.com/rails/ActionView/Helpers/FormTagHelper/select_tag

根据您在下面的评论,在 url 中获取单词的最简单方法是覆盖模式中的参数,如下所示:

def to_param
  "#{id}-#{name}".parameterize
end

但这并不完美,并且灌输了一个数字。要摆脱数字,您将创建一个唯一的字符串,通常称为 slug,然后通过 slug 完成所有查找。

于 2013-01-29T01:25:48.600 回答
0

在处理选择标签和数据库表时,我总是发现最好使用 collection_select http://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html#method-i-collection_select

您可以使用

collection_select :client, :country_id, Country.all, :id, :name
于 2013-01-29T02:11:43.603 回答
0

我放了这个,它现在似乎可以工作了。这是正确的解决方案吗?

<%= Country.find(@client.country_id).name %>
于 2013-01-29T03:59:45.397 回答