为什么我会收到“未知动作无法找到动作'显示'”?

时间:2013-08-22 02:53:24

标签: ruby-on-rails ruby static controller routes

我正在尝试为Rails应用程序创建一系列静态页面。 “约”页面工作正常,但当我尝试在“条款”页面使用相同的方法时,我得到一个未知的操作。我假设这是我的控制器。

这是我的routes.rb文件:

resources :pages
get "pages/index"

match '/about' => 'pages#about'
match ':permalink', :controller => 'pages', :action => 'show', :as => 'about'

match '/terms' => 'pages#terms'
match ':permalink', :controller => 'pages', :action => 'show', :as => 'terms'


root :to => 'pages#index'

我的控制器看起来像这样:

class PagesController < ApplicationController
  helper_method :search_performed?
  def index
    @search = Farm.search(params[:q])
    @json = @search.result.to_gmaps4rails 
  end

  protected
  def search_performed?
    params[:q].present?
  end

  def about
  end

  def feedback
  end

  def terms
  end

end

知道发生了什么事吗?

3 个答案:

答案 0 :(得分:7)

我的案子与上述情况不同,所以我写的是为了帮助。 我查看了相同的错误,我明白错误是由于一些路由问题,而这是我的路线

resources 'customers'
  get "/customers/dashboard" => "customers#dashboard"

然后我改变了安排

  get "/customers/dashboard" => "customers#dashboard"
resources 'customers'

我的路线工作 - 快乐编码:)

答案 1 :(得分:3)

您误解了参数的用途,它旨在自定义命名路由。 通过文件 ActionDispatch::Routing Rails按照从上到下的顺序匹配路由,因此这就是您所看到的行为。

提取术语之间的共同逻辑,并且约束和术语指向他们自己的控制器动作。

答案 2 :(得分:-1)

因为您未在show

中创建操作PagesController
def show
end
路线中的

:as => 'about'表示您可以通过about_pathabout_url等代码调用此助手,但仍需要:action => 'show'