Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails:路由到不使用';不涉及数据库_Ruby On Rails_Ruby_Routes - Fatal编程技术网

Ruby on rails Rails:路由到不使用';不涉及数据库

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#

有人告诉我,我放在一起的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路径下有几页。这样做对吗?如果您能解释一个更好的选择,我将不胜感激。

例如,您可以创建资源页。 它将处理模型,包含页面内容

使用这种方法,您将清理路由文件

请检查此项


如果您不介意丢失命名路由,并且不想列出所有可能的操作,则可以执行以下操作:

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_在哪个类下?