【问题标题】:Overriding show/edit/etc behaviour in ActiveScaffold覆盖 ActiveScaffold 中的显示/编辑/等行为
【发布时间】:2010-10-12 10:39:19
【问题描述】:

我目前有一个由 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 放在字段中,但它不是我想要的 - 再说一遍,长篇大论... :(

【问题讨论】:

    标签: ruby-on-rails activescaffold


    【解决方案1】:

    好吧,这可能不是最好的解决方案,但它是最明显的。

    在我的“编辑:”中,我添加了一个我最初省略的非常重要的细节。 ActiveScaffold 会自动将 URL 中的 ID 设置为来自当前记录的 ID,但是我的自定义控制器实际上需要不同的 ID(实际上是记录上的外键)。

    解决方案 - 现在很明显 - 只是将我的自定义控制器更改为使用它传递的默认 ID,并将 ActiveRecord 查询更改为使用此 ID...d'oh。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-31
      相关资源
      最近更新 更多