Rails 管理:无法自定义控制器操作

Rails Administrate: Cannot customise controller actions

我正在使用 Rails Administrate 并想覆盖控制器上的 new 操作。 The documentation 表明这很简单。但是,应用程序似乎忽略了我的重写并直接渲染 new.html.erb 而不是通过我对 new 方法的重写:

控制器:

class MyOrderController < Administrate::ApplicationController

    def valid_action?(name, resource = resource_class)
      %w[edit destroy].exclude?(name.to_s) && super
    end

    def new
      @orders = Order.find_by(property: params[:property])
    end
end

查看:

<div>
<%= @orders.each { |order| %>
  <%=  order.id  %>
<% } %>
</div>

特别是,当转到 /orders/new 时,应用程序不会首先执行我的自定义 new 操作,导致错误,因为 @orders 为 nil。

没关系,原因是一个愚蠢的语法错误:end 语句在错误的位置:

module MyModule do
  class MyOrderController < Administrate::ApplicationController

    def valid_action?(name, resource = resource_class)
      %w[edit destroy].exclude?(name.to_s) && super
    end
  
  end <-- in wrong place

    def new <-- outside the scope of Controller 
      @orders = Order.find_by(property: params[:property])
    end
  end