我目前有一个由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_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,因为我并不真的想要滚动我自己的列表版本。我在googlegroup里找到了一个问同样问题的人,但没有得到回应。
http://www.mail-archive.com/activescaffold@googlegroups.com/msg00798.html
编辑:我应该补充一点,不指定:id参数实际上会将默认的ActiveRecord ID放在字段中,但这并不完全是我想要的--再说一遍,说来话长. :(
发布于 2010-10-12 02:39:19
好吧,这可能不是最好的解决方案,但它是最明显的。
在我的“编辑:”中,我添加了一个非常重要的细节,这是我最初忽略的。ActiveScaffold自动将URL中的ID设置为当前记录中的ID,但是我的自定义控制器实际上需要一个不同的ID(实际上是记录上的外键)。
现在显而易见的解决方案是更改我的自定义控制器以使用它传递的默认ID,并将ActiveRecord查询更改为使用此ID.哦哦。
https://stackoverflow.com/questions/3911247
复制相似问题