[英]Rails routing dynamic pages to friendly url
我有一个活动网站,该网站需要为列名称:domains生成一个新的URL,当用户在活动管理员中创建该事件时即会定义该URL,即http://www.re-work.co/:domains
我有事件模态和events_controller并且视图是events#show
在我的路线文件中
match '/:domains' => "events#show"
resources :events
我的控制器有这个问题,但我不知道将其更改为什么:
class EventsController < ApplicationController
def show
@event = Event.where(:domains => request.base_url).first
if @event.nil?
@event = Event.first
end
end
瑞克路线的摘要,就像其他路线一样
$ rake routes
root / events#show
events GET /events(.:format) events#index
POST /events(.:format) events#create
new_event GET /events/new(.:format) events#new
edit_event GET /events/:id/edit(.:format) events#edit
event GET /events/:id(.:format) events#show
PUT /events/:id(.:format) events#update
DELETE /events/:id(.:format) events#destroy
所有这些url'/ events / technology'或'/ events / cities'或'/ cities'或'/ technology'都在同一页面上,我是Rails的新手,并且已阅读/观看过Rails路由教程,但我无法确定出来。 有人可以帮忙吗?
那是因为这行:
match '/:domains' => "events#show"
正在匹配“ /”之后的所有内容,并将其指向events#show
动作。 该行不是必需的(您可以删除它),因为:
resources :events
将为事件控制器生成所有默认路由。
编辑:
如果您要执行的操作是捕获在show
动作中使用的/:domains
传递的内容。 然后,这些参数将作为params
散列的一部分传播,例如:
Parameters: {"domains"=>"technology"}
您可以像params[:domains]
这样访问它。 在这种情况下,您可以保留第一行:
match '/:domains' => "events#show"
match '/events/:domains' => "events#show" # add this one
resources :events # <- delete this one, this right now is kind of redundant for what you're trying to do
并更改以下代码:
@event = Event.where(:domains => params[:domains] ).first
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.