Rails不相关的表

时间:2013-01-29 01:16:57

标签: ruby-on-rails

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

4 个答案:

答案 0 :(得分:0)

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

协会的设置如下:

class Client < ActiveRecord::Base

  has_one :country

  ...

end


class Country < ActiveRecord::Base

  belongs_to :client

  ...

end

答案 1 :(得分:0)

像...一样的东西。

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

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

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

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

但这并不完美,灌输包括一些数字。为了摆脱这个数字你要创建一个独特的字符串,通常称为slug,然后通过slug做你所有的发现。

答案 2 :(得分:0)

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

你可以使用

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

答案 3 :(得分:0)

我把它放在现在似乎正在起作用。这是正确的解决方案吗?

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