Rails Active Scaffold中language_id列表页显示ID而非名称的问题求解
解决Active Scaffold列表页显示language_id ID而非名称的问题
方法一:利用Active Record关联(推荐)
这是最符合Rails惯例的解决方案:
- 在
MailTemplate模型中添加关联关系:
belongs_to :language
- 修改Active Scaffold的列表配置,将
:language_id替换为:language:
config.list.columns = [:name, :language, :autocall_traitment_type]
- 确保
Language模型定义了to_s方法(若未默认定义),让Active Scaffold自动渲染语言名称:
class Language < ApplicationRecord def to_s name end end
方法二:自定义列的显示格式(无需修改列名)
如果不想替换列表列名,可以直接为:language_id列添加格式化逻辑:
config.columns[:language_id].formatter = lambda { |record| Language.find(record.language_id)&.name || record.language_id }
额外提示:修复排序配置问题
你当前的排序配置存在重复赋值,最终只有最后一行的:name => 'ASC'会生效,应该合并为单一哈希:
config.list.sorting = {:language_id => 'ASC', :autocall_traitment_type => 'ASC', :name => 'ASC'}
内容的提问来源于stack exchange,提问作者jeanpil
相关产品推荐
相关产品推荐

