0

我正在尝试为 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

知道发生了什么吗?

4

3 回答 3

8

我的情况与上述情况不同,所以我写信是为了帮助。我查看了相同的错误,并且我知道该错误是由于某些路由问题造成的,而这是我的路线

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

然后我改变了安排

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

我的路线有效 - 快乐编码:)

于 2015-11-30T20:55:07.257 回答
3

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

提取 term 和 about 之间的共同逻辑,让 about 和 term 指向它们自己的控制器操作。

于 2013-08-22T03:09:57.340 回答
-1

因为你没有show在你的PagesController

def show
end

:as => 'about'在你的路线中意味着你可以从类似的代码中调用这个帮助器about_pathor about_url,但它仍然需要:action => 'show'

于 2013-08-22T03:10:58.850 回答