我目前有一个由 ActiveScaffold 生成的通用列表。在列表中每一行的末尾,ActiveScaffold 为每条记录添加标准 CRUD 链接 - 显示、编辑、删除。
我不希望将 ActiveScaffold 用于这些操作(长篇大论),并创建了我自己的控制器来处理这个问题。我试图覆盖这些链接以指向我自己的控制器,但我无法弄清楚如何通过记录的 ID。
例如,假设我希望 Show 的新链接是/foo/show/[id] - 我的 ActiveScaffold 配置中有这个:
config.show.link.action = "show"
config.show.link.parameters = {:controller => "foo", :id => ???}
我不知道在id参数中要传递什么。我尝试过使用 :foo_id 或 foo_id 之类的东西,但控制器不知道它们是什么。例如,当我使用 :foo_id 时,我只得到字符串 - /foo/show/foo_id。
我的控制器在下面,但没有太多内容。
class MessagesController < ApplicationController
active_scaffold :messages do |config|
config.columns = [:eff_date, :exp_date, :type, :message]
config.show.link.action = "show"
config.show.link.parameters = {:controller => "show_messages", :id => ??}
end
end
我想继续使用 ActiveScaffold 作为列表屏幕,因为我真的不想滚动我自己的列表版本。我发现一个人在 googlegroups 中问同样的问题,但没有任何回应。
http://www.mail-archive.com/activescaffold@googlegroups.com/msg00798.html
编辑:我应该补充一点,不指定 :id 参数实际上确实将默认的 ActiveRecord ID 放在字段中,但它不是我想要的 - 再说一遍,长篇大论...... :(