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
我正在使用 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