Phi*_*egg 6 ruby-on-rails ruby-on-rails-3 activeadmin
我目前有一个Rails 3.0.10应用程序,我用两个简单的关联模型:has_many和belongs_to.
安装ActiveAdmin插件并创建相应的Ruby资源文件后,我注意到了一些奇怪的行为.
在下面,您可以看到"作业文件"属于"Ernet客户端".这些关联都正常工作,但显示名称显示为实际的ActiveRecord对象而不是客户端名称.

这是"作业文件"部分下的展示视图:

但是,如果我去查看实际的客户端,则会显示正确的文本:

"作业文件"资源中肯定会出现问题导致此问题,但我无法弄清楚它可能是什么.谷歌搜索后我发现了这个:http: //groups.google.com/group/activeadmin/browse_thread/thread/2a261e070efa7bae
在JobFile.register文件中,我使用以下命令指定了显示名称:
filter :ernet_client, :display_name_methods => :display_name
Run Code Online (Sandbox Code Playgroud)
但这并不起作用,而且我循环浏览所有其他可用名称也无济于事.
我查找了ActiveAdmin的依赖项,sass-rails似乎是唯一的 - 但是如果你使用3.1而我正在使用Rails 3.0.10.
最后,为了确保我的关联确实有效,我打开了Rails控制台并创建了一个作业文件:
job = JobFile.new
=> #<JobFile hash returned>
job.ernet_client_id = 2
=> 2
job.ernet_client.client_name
=> Target
Run Code Online (Sandbox Code Playgroud)
似乎所有东西都应该正常运作.
任何人都有任何洞察力如何解决这个问题?
Rya*_*igg 10
您是否尝试to_s在ErnetClient模型上定义方法?
def to_s
display_name
end
Run Code Online (Sandbox Code Playgroud)
看起来这是自动调用的方法,就像你to_s在控制台中调用其中一个对象一样,你会得到类似的结果.
您可以在此处找到说明Filter select show object 而不是 object name。
# Active Admin makes educated guesses when displaying objects,
this is the list of methods it tries calling in order
setting :display_name_methods, [ :display_name,
:full_name,
:name,
:username,
:login,
:title,
:email,
:to_s ]
Run Code Online (Sandbox Code Playgroud)
您可以在模型中定义一个display_name、full_name或 ...(请参阅上面的列表)... 方法。ActiveAdmin 寻找其中之一。
| 归档时间: |
|
| 查看次数: |
2369 次 |
| 最近记录: |