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