首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ruby on Rails页面控件

问Ruby on Rails页面控件
EN

Stack Overflow用户
提问于 2016-12-10 19:03:01
回答 2查看 50关注 0票数 0

对不起,我的英语不好。问:我有模型页面的栏目标题,描述等。我可以创建,更改,销毁这些页面。我可以看到链接mydomain/pages/1的内容。我需要为每个页面都有模板和路由,这样我就可以看到链接上的内容,例如maydomain/contacts。该怎么做呢?请帮帮我。

EN

回答 2

Stack Overflow用户

发布于 2016-12-10 20:08:52

实现您自己的解决方案的一种方法是将以下内容添加到路由文件中:

get '/mydomain/:slug, to: 'pages#show'

这是一个非常通用的匹配器,所以将它添加到路由的底部,这样它就不会覆盖其他匹配器。

然后你的控制器show action看起来会像这样:

代码语言:javascript
复制
def show
  @page = Page.find_by_slug(params[:slug])
end

当然,这假设您的Pages表中有一个slug列。

票数 0
EN

Stack Overflow用户

发布于 2016-12-10 20:16:50

我假设"mydomain“指的是你站点的根url (例如myapp.example.com)

我建议你把问题分成两部分:

  1. 使用id以外的属性来标识url中的项
  2. 缩减路由,以便不需要指定控制器。

对于1,看看这个:spickermann笔记,正如@ Rails routes with :name instead of :id url parameters建议的那样,friendly_id可能是一个很好的解决方案。

对于2,您将需要创建一个不带控制器名称的路由,然后在路由定义中指定控制器。(请参阅Rails Routing Guide):

代码语言:javascript
复制
get ':param', to: :show, controller: 'pages'

为了让它起作用,你需要把它放在后面(在routes.rb中更低),这样它就不会干扰其他路由。我还建议使用adding a constraint to the route -以限制可能被路由到该路由器错误urls。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41074786

复制
相关文章

相似问题

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