Ruby on rails Rails:路由到不使用';不涉及数据库
有人告诉我,我放在一起的routes.rb文件看起来像是在恐慌中编码的(它是在恐慌中编码的) 我正在开发的Rails应用程序是一个电子学习,并不是所有页面都涉及到对数据库的测试 我该如何将这些页面包括在内?我根本不用路线吗?或者页面应该是一种资源?我对此有点不知所措 这些教程似乎都关注RESTful交互,而不是站点的一般行为 这是我的路由文件:Ruby on rails Rails:路由到不使用';不涉及数据库,ruby-on-rails,ruby,routes,Ruby On Rails,Ruby,Routes,有人告诉我,我放在一起的routes.rb文件看起来像是在恐慌中编码的(它是在恐慌中编码的) 我正在开发的Rails应用程序是一个电子学习,并不是所有页面都涉及到对数据库的测试 我该如何将这些页面包括在内?我根本不用路线吗?或者页面应该是一种资源?我对此有点不知所措 这些教程似乎都关注RESTful交互,而不是站点的一般行为 这是我的路由文件: Rails.application.routes.draw do devise_for :users root :to => 'home#
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路径下有几页。这样做对吗?如果您能解释一个更好的选择,我将不胜感激。例如,您可以创建资源页。 它将处理模型,包含页面内容 使用这种方法,您将清理路由文件请检查此项
如果您不介意丢失命名路由,并且不想列出所有可能的操作,则可以执行以下操作:
get ':action', controller: 'home'
scope module: 'home' do
get 'elearning'
# ...
end
这将把所有与此模式匹配的不匹配请求路由到Home
控制器。您需要将它放在routes.rb的底部,这样它就不会拦截其他请求
否则,您可以执行以下操作:
get ':action', controller: 'home'
scope module: 'home' do
get 'elearning'
# ...
end
甚至:
scope module: 'home' do
%w{ elearning howitworks etc }.each do |r|
get r
end
end
因此,我找到了一段用于静态页面的很酷的代码片段
我设置了一个静态页面控制器,您只需在其中输入页面名称。
然后在静态页面视图文件夹下添加一个同名文件,并将其放入routes.rb中,只需
StaticPagesController.action_methods.each do |action|
get "/#{action}", to: "static_pages##{action}", as: "#{action}"
end
这将迭代您获得的控制器并为您创建路由
如果你想看看这个例子,你可以看看我用它做的这个简单的例子
希望有帮助 我会将它们变成一个页面资源,添加一个简单的管理系统,并使页面在管理系统中可编辑。这将生成类似/homes/elearning
,,如果询问者定义了路径,如/elearning
。更新为路径:“”。要删除/home/elearning并仅获取/elearning,显然有些关于路径的详细信息我还不了解。如果你不介意解释的话;为什么您的解决方案意味着“丢失命名路由”,这意味着什么?@moosefetcher,通常在路由中定义的路由。rb
将生成一个命名路由帮助器,可用于应用程序的其他部分(例如,链接到“e-learning”,电子学习路径
)。我的答案中的第一个示例是动态路由的,因此您将无法使用elearning\u路径
,您必须使用类似url\u的内容(控制器:'home',操作:'elearning')
。这只适用于这里的第一个示例。关于Rails路由的更多信息,我强烈推荐,我一直都在重温它。我经常被引导到这个页面,我不能告诉你。我会再看一眼,但是Rails方法(例如url_for)似乎是从哪里冒出来的。文档中列出的方法的url_在哪个类下?