我正在尝试为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
知道发生了什么事吗?
答案 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_path
或about_url
等代码调用此助手,但仍需要:action => 'show'