编辑:我在我的数据库中使用Mongoid / MongoDB,这意味着我认为我没有得到正常的Active Record工具。
我有一个带有模型页面的简单Rails 3.1应用程序。我想将'/:customURL'与Page的show action相匹配,使用相关的:customURL。我该如何更改控制器和路线?请记住,我想保留一些来自'/ SOMETHING'的路线。例如'/ pages'仍然应该转到我的Page #index动作,而不是试图找到一个包含customURL'pages'的页面。
当前管制员:
def show
@page = Page.find(params[:id])
@title = @page.title
respond_to do |format|
format.html # show.html.erb
format.json { render json: @page }
end
end
路线:
resources :pages do
resources :feeds
end
get "pages/index"
get "pages/show"
get "pages/new"
root :to => "pages#index"
万分感谢。
答案 0 :(得分:2)
假设您的Page
数据库表中包含customURL
属性。在您的控制器中:
def show
@page = Page.first(:conditions => {:customURL => params[:customURL]})
@title = @page.title
respond_to do |format|
format.html # show.html.erb
format.json { render json: @page }
end
end
在您的路线中
resources :pages, :except => :show do
resources :feeds
end
# Anything you want to match before the custom URLs needs to go above the next route definition
get "/:customURL" => "pages#show"
root :to => "pages#index"