【发布时间】:2010-07-14 20:44:08
【问题描述】:
大家下午好,
我有一个控制器运行一个带有 except 覆盖的前置过滤器。它适用于控制器中的所有方法,保存一个。我已经从我的应用程序的另一部分复制了相关方法的代码,只是进行了我需要的更改以使其适用于这个特定区域。
以下是控制器代码示例:
class Admin::DealsController < ApplicationController
before_filter :populate, :except => [:index, :create, :new, :search]
# GET /deals
def index
@deals = Deal.paginate(:page => params[:page], :per_page => PAGESIZE, :order => 'start_time DESC')
@page_subtitle = "Deals"
end
def search
@searchString = params[:search_string]
@deals = Deal.paginate(:page => params[:page], :per_page => PAGESIZE, :conditions => "subject LIKE '%#{@searchString}%'")
@page_subtitle = "Deal Search Results"
render 'index'
end
protected
def populate
@deal = Deal.find(params[:id])
end
end
这是我的 routes.rb 文件中相关方法的路由:
admin.search_deal 'deals/search', :controller => 'deals', :action => 'search', :method => 'get'
现在,当我尝试访问此 URL 时:
/admin/deals/search?search_string=test&commit=Search
它会生成以下错误消息:
Couldn't find Deal with ID=search
此代码适用于其他几个控制器,我整天都在摸索着想看看我做错了什么。我会很感激任何帮助,谢谢。
【问题讨论】:
-
日志显示该 URL 调用了哪个控制器操作?这绝对是您的
search操作吗?
标签: ruby-on-rails ruby overriding filter