首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >路由到子文件夹中的静态页

路由到子文件夹中的静态页
EN

Stack Overflow用户
提问于 2015-10-11 11:07:15
回答 1查看 942关注 0票数 1

有一个Rails应用程序的帮助系统,它使用静态页面控制器。

代码语言:javascript
运行
复制
def show
  if valid_page?
   render template: "help/#{params[:page]}" 
else
  render file: "public/404.html", status: :not_found
end

使用路由获取‘帮助:页’=> 'help#show',:via => :get

在应用程序的所有静态视图中,“帮助”文件夹开始变得压倒一切。因此,我想将视图拆分为带有关联控制器的子文件夹,因此在“帮助”文件夹中现在是。

代码语言:javascript
运行
复制
---Welcome
    ----index.html.erb
    ----about.html.erb
    ----contact.html.erb
---Blog 
    ----index.html.erb

在“帮助”文件夹下有大约20多个子文件夹,每个子文件夹都有3-6个帮助文件,但没有为每个子文件夹创建路由,是否有一种方法可以有一个智能路径来引用控制器(文件夹)和页面。

代码语言:javascript
运行
复制
get 'help:folder:page' => 'help#show', :via => [:get]

def show
  if valid_page?
    render template: "help/#{params[:folder]}/#{params[:page]}/"
  else
   render file: "public/404.html", status: :not_found
  end

有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2015-10-12 12:06:54

下面是它的工作原理:

代码语言:javascript
运行
复制
#config/routes.rb
resources :help, only: [:index, :show] #-> url.com/help/:id

这将允许您使用以下内容:

代码语言:javascript
运行
复制
#app/controllers/help_controller.rb
class HelpController < ApplicationController
   def show
      @page = Help.find params[:id]
      #no need to rescue this, rails will automatically throw a 404 error if not found
   end
end

#app/models/page.rb
class Page < ActiveRecord::Base
   #columns id | type | title | body | created_at | updated_at
end

#app/models/help.rb
class Help < Page
end

您的主要问题是将每个页面存储为一个.html.erb文件。虽然在某些情况下,这是可以的,但在这种情况下,它会变得非常混乱,很快。

您将更好地创建一个Modeltable来存储所需的help页面,允许您根据需要对它们进行整理和调用。这样做的另一个好处是没有验证(Rails将处理所有这些),您将能够使用一个视图文件来使其工作:

代码语言:javascript
运行
复制
#app/views/help/show.html.erb
<%= @page.title %>
<%= @page.body %>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33064253

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档