对不起,我的英语不好。问:我有模型页面的栏目标题,描述等。我可以创建,更改,销毁这些页面。我可以看到链接mydomain/pages/1的内容。我需要为每个页面都有模板和路由,这样我就可以看到链接上的内容,例如maydomain/contacts。该怎么做呢?请帮帮我。
发布于 2016-12-10 20:08:52
实现您自己的解决方案的一种方法是将以下内容添加到路由文件中:
get '/mydomain/:slug, to: 'pages#show'
这是一个非常通用的匹配器,所以将它添加到路由的底部,这样它就不会覆盖其他匹配器。
然后你的控制器show action看起来会像这样:
def show
@page = Page.find_by_slug(params[:slug])
end当然,这假设您的Pages表中有一个slug列。
发布于 2016-12-10 20:16:50
我假设"mydomain“指的是你站点的根url (例如myapp.example.com)
我建议你把问题分成两部分:
对于1,看看这个:spickermann笔记,正如@ Rails routes with :name instead of :id url parameters建议的那样,friendly_id可能是一个很好的解决方案。
对于2,您将需要创建一个不带控制器名称的路由,然后在路由定义中指定控制器。(请参阅Rails Routing Guide):
get ':param', to: :show, controller: 'pages'为了让它起作用,你需要把它放在后面(在routes.rb中更低),这样它就不会干扰其他路由。我还建议使用adding a constraint to the route -以限制可能被路由到该路由器错误urls。
https://stackoverflow.com/questions/41074786
复制相似问题