Ruby on rails 覆盖Refinerycms中的编辑/新建/创建行为

Ruby on rails 覆盖Refinerycms中的编辑/新建/创建行为,ruby-on-rails,refinerycms,Ruby On Rails,Refinerycms,我需要在Pages controller(或任何自定义生成的引擎)中更改编辑/创建方法,但找不到任何方法。我已经覆盖了所有的控制器,并试图搜索整个项目的任何“def编辑”,但没有找到任何 我是Rails新手,我不明白这是怎么回事。当我试图编辑页面时,debug(params)指向refinery/admin/pages,但在admin或pages控制器中没有编辑方法。那么,当我点击更新按钮或创建新页面时,请求实际会去哪里呢?好的,我找到了问题所在 当您执行“override controller

我需要在Pages controller(或任何自定义生成的引擎)中更改编辑/创建方法,但找不到任何方法。我已经覆盖了所有的控制器,并试图搜索整个项目的任何“def编辑”,但没有找到任何


我是Rails新手,我不明白这是怎么回事。当我试图编辑页面时,debug(params)指向refinery/admin/pages,但在admin或pages控制器中没有编辑方法。那么,当我点击更新按钮或创建新页面时,请求实际会去哪里呢?

好的,我找到了问题所在

当您执行“override controller=*”时,实际上并没有覆盖所有控制器,因此controllers/refinery/中的pages_controller.rb显然只是pages控制器的一半。我需要的真正的控制器是controllers/refinery/admin中的一个,当您执行“override controller=refinery/admin/*”时会显示该控制器


仍然在弄清楚创建和编辑操作在哪里,但至少我找到了新的和更新操作。

我对Rails和精炼厂世界还不熟悉,但也许我能帮上忙

你读过这篇文章吗

在我的例子中,我必须在将参数保存到数据库之前修改它,基本上确保它是大写的。所以我这样做了:

Refinery::Routes::Admin::RoutesController.class_eval do
  before_filter :uppercase_region, :only => [:create, :update]

  protected

  def uppercase_region
    params[:route][:region].upcase!
  end
end
也许有一个过滤器就足够了。我想在这里你也可以覆盖创建和更新操作

您将看到,在生成的引擎中,您有如下内容:

crudify :'refinery/routes/route',
        :title_attribute => 'name',
        :xhr_paging => true
如果您遵循该代码,则会进入“crud.rb”文件:

在这里,您可以阅读操作的外观。因此,现在您可以在“decorator”文件中创建自己的操作,如教程中所述

希望这对某人有用