【发布时间】:2015-05-30 04:35:18
【问题描述】:
我正在使用wice_grid 并有两个关联的表:组织和用户(具有 1:many 关系)。对于所有用户的网格视图,我想包含一个列,该列说明用户所属的组织的名称(组织模型中的变量)。为此,我定义了一个自定义过滤器,gem 为其提供了说明here。
我为网格视图定义了以下列:
g.column name: 'Organization', filter_type: :string, attribute: 'users.organization_id',
custom_filter: Organization.all.map{|pr| [pr.id, pr.organizationname]} do |user|
link_to(user.organization.organizationname, organization_path(user.organization))
end
由此产生的错误信息(参考第一行):
WiceGrid: Invalid attribute name users.organization_id. An attribute name must not contain a table name!
但我确实觉得我完全掌握了说明中的示例。知道我做错了什么吗?
更新:如果我将第一行更改为:
g.column name: 'Organization', filter_type: :string, attribute: 'organization_id',
页面呈现没有错误。但是,此列的过滤器是一个下拉框,而不是字符串的搜索字段(将其更改为 filter_type: :string 无效)。另外,如果我尝试对列进行排序,页面会出现以下错误。任何想法如何定义列/自定义过滤器?
PG::InvalidTextRepresentation: ERROR: invalid input syntax for integer: "Gutmann-Stroman 95"
LINE 1: ...OM "users" WHERE (( users.organization_id = 'Gutmann-S...
^
: SELECT COUNT(*) FROM "users" WHERE (( users.organization_id = 'Gutmann-Stroman 95'))
user表中的organization_id保存了用户所属组织的id号。 “Gutmann-Stroman 95”是与 id 关联的 organizationname。我将friendly_id 用于友好的url,它在url 中转换名称中的id;也许这与它有关?
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-4 gridview associations