Tag: 路由

Rails路由问题:直接在Root下映射Slugs / Permalinks?

大家早上好!.. 一般路由问题在这里…我正在努力为我的应用程序中的用户实现类似于此的路由。 http://www.example.com/ 用户名 然后映射到usersControllers#show,因此我的路由文件中有以下内容。 map.connect’/:permalink’,: controllers =>“users”,:action =>“show” 然后我得到了show动作,通过参数中的永久链接找到用户。 所以它的作品却…… 我遇到的问题是所有其他UNDEFINED路由都被发送到userController #show。 即404和其他未命名的路线。 所以我不认为我会采用正确的惯例。 我的解决方案是在这之上添加其他命名路由,这解决了问题,但对我来说似乎很脆弱。 我在想这个错吗? 什么是更好的解决方案? 我打算谷歌寻求答案,但我只是想把它扔掉讨论。 想法?

在Rails中路由。 URL中的点

我在我的Category模型中覆盖了to_param方法 def to_param name end 和routes.rb get ‘/:id’ => ‘categories#show’, :as => :category 当name参数不包含任何点( foobar )时,一切正常,但是当它( foobar )时,我得到一个错误No route matches [GET] 。 所以我的问题是:是否可以在路由中使用点作为参数名称的一部分? 或者我可以做些什么来实现这个目的,也许是一些钩子或什么的。 任何帮助表示赞赏。

Rails 3路由约束和正则表达式

我希望匹配路径中的模式state/city ,除非状态变量等于“auth” match ‘/:state/:city’ => ‘cities#index’, :as => :state_cities, :constraints => {:state => /(?!auth)/ } 例如, mydomain.com/fl/miami很好。 mydomain.com/auth/twitter很糟糕。 我正在使用omniauth,它要求你去/auth/twitter进行身份validation,但是当我输入rake routes时无处可寻。

Rails中的路由使用户名成为URL:

在我的Rails应用程序中,有Device Model – User和Registry模型(每个用户都有一个注册表)。 我想改变我的路线,而不是: 的 “http://本地主机:3000 /注册/ 3” 表明: “HTTP://本地主机:3000 / erinwalker” 所以我改变了路线 match ‘/:name’ => “registries#show” 并且我的控制器中的show动作: def show @user = current_user @user = User.find_by_name!(params[:name]) @registry = @user.registry 它可以工作,但是当我现在首先创建或更新注册表时,它说: Couldn’t find User with name = app/controllers/registries_controller.rb:21:in `show’ 尽管节目动作有效吗? 注册表控制器:类RegistriesController :show load_and_authorize_resource # GET /registries # GET /registries.json def index @registries = Registry.all @user […]

我们如何识别动态URL中的参数?

我们正在构建一个Rails CMS,其中博客或新闻列表可以出现在站点树的任何位置。 这意味着任何页面都基于数据库字段知道它们的类型 – 例如:页面知道它是新闻列表类型,因此一旦为该页面调用该URL,我们需要它由newslistingcontroller处理。 新闻列表页面的子页面是新闻故事 – 每个都有日期和类别。 新闻列表的URL可能是 /dogs/snoopy-news/ 并且可能有新闻报道 /dogs/snoopy-news/snoopy-is-great/ 我们的复杂性在于URL中包含用于列出新闻报道或类别列表的日期范围的附加参数,例如: 列出所有11月新闻报道 /dogs/snoopy-news/2010/11/ 或列出所有以食物为类别的故事: /dogs/snoopy-news/category/food/ 由于该新闻列表页面可能位于网站层次结构中的任何级别,我们如何确定2010是参数还是该类别是参数? (我们将为每个页面存储数据库中的所有URL,以便我们可以先查找以查看是否存在URL的页面) 编辑:这篇文章提供了一个可能的解决方案: 动态CMS像铁路上的ruby路线 ,我们将尝试并报告。 在CMS中保存页面时,我们不仅会在页面本身添加路由到路由表,还会为可能的参数添加路由: /dogs/snoopy-news/{year}/{month}/

如何在更改路由转换时重定向(301)?

我正在寻找一种简单的方法来在我的应用程序中进行重定向。 情况: 我有这样的路线: http://myapp.com/authors/5-hemingway/books/1-moby-dick 路线以这种方式翻译(使用gem’i18n_routing’): http://myapp.com/acutores/5-hemingway/libros/1-moby-dick 现在,我将acutores的翻译改为了scriptores。 简单的步骤,但我想将包含旧“acutores”资源名称的所有路由重定向到带有“scriptores”的路由。 我的猜测是,我应该在routes.rb中玩: match “/acutores” => redirect(“/scriptores”) 但是如何在“acutores”出现的所有情况下有效地做到这一点? (尤其是嵌套路线)

如何在Rails中将“新”操作重定向到“创建”?

在Rails中,我可以使用routes文件中的resources自动为CRUD操作创建一组路由。 这会创建index , new , create , edit , show , update和销毁路径。 我理解这些路由如何工作的一般流程,并且通常在调用路由时,根据传递到相应操作的参数创建模型对象,并创建相应的视图或将客户端重定向到另一个指定的操作。 new视图和edit视图都可以使用相同的_form partial来更新其各自操作中的模型对象。 但是,我很难理解客户端之后如何重定向到另一个操作。 例如,在new操作中,客户端被重定向到create动作,并且传递new中更新的模型对象以作为参数create 。 我不明白这是怎么回事,因为没有指定重定向,我看不出模型对象是如何变成参数的。 def new @article = Article.new end def create @article = Article.create(article_params) redirect_to(article_path(@article.id)) end _form部分:

link_to更新(没有表格)

我想要一个更新资源的链接,而不使用HTML表单。 路线: resources :users do resource :profile, :controller=>”profiles” resources :friends end 耙路线: user_friend GET /users/:user_id/friends/:id(.:format){:action=>”show”, :controller=>”friends”} PUT /users/:user_id/friends/:id(.:format){:action=>”update”, :controller=>”friends”} 我想通过简单的链接使用put来更新朋友,如下所示: ‘put’)%> 但是当Rails遇到这个链接时,他试图进入节目动作。 问题是:这样做的正确链接是什么?

覆盖Rails 3 Engines提供的命名路由

我正在使用Rails引擎的Ruby on Rails 3(.0)应用程序。 但是,在我的本地应用程序中,我想覆盖Rails引擎提供的其中一个路由。 从引擎config / routes.rb: match ‘their_named_route’ => ‘controller#action’, :as => ‘the_route’ 从我的应用程序config / routes.rb: match ‘my_named_route’ => ‘controller#action’, :as => ‘the_route’ 然而,当我检查路线时,两者似乎都是活动的(并且它们的路线似乎“赢”,至少在发动机控制器内) $ rake routes the_route /my_named_route(.:format) {:controller=>”controller”, :action=>”action”} the_route /their_named_route(.:format) {:controller=>”controller”, :action=>”action”} 有没有一种方法可以强制我的本地应用程序的命名路由优先?

Rails:form_for命名空间资源

我想为用户设置CRUD,仅适用于我的Web应用程序的管理员。 所以在routes.rb中: namespace :admin do resources :user end 这意味着: admin_user_index GET /admin/user(.:format) admin/user#index POST /admin/user(.:format) admin/user#create new_admin_user GET /admin/user/new(.:format) admin/user#new edit_admin_user GET /admin/user/:id/edit(.:format) admin/user#edit admin_user GET /admin/user/:id(.:format) admin/user#show PUT /admin/user/:id(.:format) admin/user#update DELETE /admin/user/:id(.:format) admin/user#destroy 显示,索引工作正常,但编辑和新的不。 我在_form第一行继续收到此错误: ###:0x007fb6645c6378>的未定义方法`user_path’ 这是这样的: 如何将form_for与命名空间资源一起使用?