4

I'm using Rails Administrate and want to override the new action on a controller. The documentation suggests this is straightforward. However, the application seems to ignore my override and goes straight to rendering new.html.erb instead of going through my override of the new method:

Controller:

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

View:

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

In particular, when going to /orders/new, the application doesn't go through my custom new action first, causing an error because @orders is nil.

sebbecker
  • 93
  • 5

1 Answers1

0

Nevermind, cause was a silly syntax error: end statement was in the wrong place:

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
sebbecker
  • 93
  • 5