我被告知我把它放在一起的routes.rb文件看起来像是在恐慌中编码(它是在恐慌中编码的)。
我正在开发的Rails应用程序是一种电子学习,并非所有页面都涉及对数据库进行测验。
如何包含这些页面?我根本不使用路线吗?或者页面应该是资源?我对此有点迷茫。
这些教程似乎都关注RESTful交互,而不是一般的网站行为。
这是我的路线档案:
Rails.application.routes.draw do
devise_for :users
root :to => 'home#index'
get "elearning" => "home#elearning"
get "howitworks" => "home#howitworks"
get "leadershipstyles" => "home#leadershipstyles"
get "whattypeofleader" => "home#whattypeofleader"
get "showmetheskills" => "home#showmetheskills"
get "safeguarding" => "home#safeguarding"
get "toolsforthejob" => "home#toolsforthejob"
get "whatnext" => "home#whatnext"
get "congratulations" => "home#congratulations"
get "teamwork" => "home#teamwork"
get "presentation" => "home#presentation"
get "planning" => "home#planning"
get "communication" => "home#communication"
# get "newjournal" => "posts#new"
# get "profile" => 'users#show'
# get "profile/edit" => 'users#edit'
resources :users do
resources :posts
end
end
好的,所以/ home路线下有几页。这是正确的方法吗?如果你能解释一个更好的选择,我会很感激。
答案 0 :(得分:0)
例如,您可以创建资源页面。 它将处理包含页面内容的模型。
使用这种方法,您将清理路线文件
答案 1 :(得分:0)
选中此answer
resources :home, path:'', except: [:new, :create, :edit, :update, :destroy] do
collection do
get 'elearning'
get 'howitworks'
get 'whattypeofleader'
......
......
get 'communication'
end
end
答案 2 :(得分:0)
如果您不介意丢失命名路线,并且不想列出所有可能的操作,您可以这样做:
get ':action', controller: 'home'
将路由匹配此模式的所有不匹配请求到Home
控制器。您希望将其放在routes.rb
的底部,以便它不会拦截其他请求。
否则,你可以这样做:
scope module: 'home' do
get 'elearning'
# ...
end
甚至:
scope module: 'home' do
%w{ elearning howitworks etc }.each do |r|
get r
end
end
答案 3 :(得分:0)
所以我找到了一个很酷的代码片段,用于我的静态页面。
我设置了一个静态页面控制器,您需要做的只是在那里放置页面的名称。 然后在静态页面视图文件夹下添加一个具有该名称的文件,并在routes.rb中,您需要做的就是
StaticPagesController.action_methods.each do |action|
get "/#{action}", to: "static_pages##{action}", as: "#{action}"
end
这会迭代您获得的控制器并为您创建路径。
如果你想看一个这样的例子,你可以查看我用它做的这个简单的blogger
希望有所帮助!