Tag: 路由

没有资源名称的Rails路由

我的rails应用程序有一个Section模型和一个Page模型。 一节有很多页面。 # section.rb class Section < ActiveRecord::Base has_many :pages end # page.rb class Page < ActiveRecord::Base belongs_to :section end 假设我有一个带有’about’的段,并且该段有三页带有slu””’,’people’,’history’,一个典型路由的url可能看起来像这样: http://example.com/sections/about/pages/intro http://example.com/sections/about/pages/people http://example.com/sections/about/pages/history 设置路线的最佳方法是什么,以便我可以使用这些url: http://example.com/about/intro http://example.com/about/people http://example.com/about/history

“资源:post,除了:: new”让Rails认为路由/post/新会指向postID“新”

我有以下路线: resources :success_criteria, except: :new 以下规范失败: describe SuccessCriteriaController do describe ‘routing’ do it ‘routes to #new’ do expect(get(‘/success_criteria/new’)).to_not be_routable end end end 失败消息: Failure/Error: expect(get(‘/posts/new’)).to_not be_routable expected {:get=>”/posts/new”} not to be routable, but it routes to {:controller=>”posts”, :action=>”show”, :id=>”new”} 控制器看起来像这样: class SuccessCriteriaController < InheritedResources::Base load_and_authorize_resource end 为什么Rails认为posts/new会指向ID为new的post? 那不对,是吗? 它可能与InheritedResources有关吗?

将标题添加到rails路由

我有List对象,如下所示: www.mysite.com/lists/123 其中123是列表的id。 我想要做的是添加列表标题的url,以便它提供更多信息(谷歌或其他)。 所以我希望它看起来像: www.mysite.com/lists/123/title-of-list-number-123 你如何添加这样的url? 如果您只输入:www.mysite.com/lists/123没有标题,是否应该找到标题,然后重定向到新路线?

没有路由匹配{:action =>“edit”,:controller =>“events”}缺少必需的键:

我正在使用Rails应用程序,在尝试添加“编辑事件”链接后,我收到了以下错误。 No route matches {:action=>”edit”, :controller=>”events”} missing required keys: [:id] 下面是我的index.html.haml .event_con %h1 Things you’ve done – @events_own.each do |event| .event_title = event.activity .event_rating %strong Rating : = event.rating &#47 10 .event_when %strong Started : = event.time.to_s(:short) .event_end %strong Ended : = event.timetwo.to_s(:short) .event_notes %strong Notes : = event.notes = link_to “Edit”, edit_event_path 这是我的事件控制器: class […]

Rails中的漂亮路径

我有一个类别模型,我使用默认的resources :categories脚手架来路由它resources :categories 。 我想知道是否有办法将路径从/category/:id更改为/category/:name 。 我补充说: match “/categories/:name” => “categories#show” 在routes.rb的资源行routes.rb并更改了控制器中的show动作: @category = Category.find_by_name(params[:name]) 它有效,但是诸如link_to some_category之类的“魔术路径”仍然使用:id格式。 有没有办法做到这一点? 如果这是一个坏主意(由于rails在内部工作的一些可能方式),还有另一种方法可以实现吗? 那么/categories/music和/categories/3都可以工作吗?

设计和I18n – 重置密码路由问题

我将I18n添加到我正在使用Devise的RoR应用程序中,如果我尝试重置密码,我现在收到错误。 错误是: Routing Error No route matches {:action=>”edit”, :controller=>”devise/passwords”, :reset_password_token=>”uMopWesaxczNn2cdePUQ”} 如何才能正确设置我的Devise路由以计入I18n? 的routes.rb scope “:locale”, locale: /#{I18n.available_locales.join(“|”)}/ do devise_for :users, path_names: {sign_in: “login”, sign_out: “logout”}, controllers: {omniauth_callbacks: “omniauth_callbacks”} root to: ‘static_pages#home’ end match ‘*path’, to: redirect {|params| “/#{I18n.default_locale}/#{CGI::unescape(params[:path])}” }, constraints: lambda { |req| !req.path.starts_with? “/#{I18n.default_locale}/” } match ”, to: redirect(“/#{I18n.default_locale}”) application_controller.rb before_filter :set_locale def set_locale I18n.locale […]

Rails 2命名空间和浅层路由问题

我已经编写了特定rails应用程序的管理区域,现在我已准备好将其设置为网站内的自己的部分。 因此,它将是/ admin 但是,我不想把它作为/ admin在路由本身中我想要一些不常见的东西,所以我在它之前和之后添加了几个连字符。 所以路由是/ -admin- /,命名空间是Admin。 使用:path_prefix =>“/ -admin-”进行设置后,我有以下代码块: map.namespace “/-admin-/”, :name_prefix => “”, :path_prefix => “/-admin-” do |admin| 这适用于所有浅层路由,相反,在rake路由输出中输出为: new_page GET /-admin-/areas/:area_id/pages/new(.:format) {:action=>”new”, :controller=>”admin/pages”} edit_admin_page GET /admin/pages/:id/edit(.:format) {:action=>”edit”, :controller=>”admin/pages”} admin_page GET /admin/pages/:id(.:format) {:action=>”show”, :controller=>”admin/pages”} PUT /admin/pages/:id(.:format) {:action=>”update”, :controller=>”admin/pages”} DELETE /admin/pages/:id(.:format) {:action=>”destroy”, :controller=>”admin/pages”} areas GET /-admin-/areas(.:format) {:action=>”index”, :controller=>”admin/areas”} POST /-admin-/areas(.:format) {:action=>”create”, :controller=>”admin/areas”} new_area […]

生产中的Rails路由损坏 – 怀疑route.rb的缓存

更新:原来这个问题是因为我的杂种的一半没有重启。 谢谢大家的帮助! 嗨伙计们,我有一个紧急的问题。 基本上,我的路由可以在我的localhost上运行。 但是当我将其部署到生产环境时,路由似乎无法正常工作。 例如,给定一个新的路线“/邀请” – 有时我会得到一个404,有时它会正常工作。 我怀疑某处有一些缓存,但我不确定。 日志:当找不到页面时(当路线准确时) 处理UsersController #network(适用于2010-06-01 09:59:31的67.180.78.126)[GET]参数:{“id”=>“new”} ActionController :: RoutingError(没有路由匹配“/ comm / role_playing_games”和{}): app / controllers / application_controller.rb:383:在prev_page_label’ app/controllers/application_controller.rb:238:in prev_page_label’ app/controllers/application_controller.rb:238:in prev_page_label’ app/controllers/application_controller.rb:238:in log_timed_info’ app / controllers / users_controller.rb:155:in network’ app/controllers/users_controller.rb:151:in network’ app/controllers/users_controller.rb:151:in network’ app/controllers/users_controller.rb:151:in网络中’ app / controllers / application_controller.rb:44:in turn_on_query_caching’ app/controllers/application_controller.rb:43:in turn_on_query_caching’ app/controllers/application_controller.rb:43:in turn_on_query_caching’ app/controllers/application_controller.rb:43:in turn_on_query_caching’ app / […]

Rails RESTful URL:特定类别下的所有post

目前我使用我的post#index action来按类别显示所有post或filter: PostsController: def index @posts = Post.all(:order => “created_at DESC”) @posts = @posts.by_category(params[:category_id]) #Custom named_scope end 路线: map.connect ‘/post/by_category/:category_id’, :controller => :posts, :action => :index map.resources :users 所以/ posts将返回所有post , / posts / by_category / 1将返回类别1下的所有post 我想知道是否有一种方法可以更好地使用RESTful ,也许可以获得一些漂亮的url_paths。 我已经阅读了指南( 使用最新的2.3 Rails分支 ),但是嵌套路由和集合似乎都不适用于这种情况。 谢谢 :)

如何将params传递给Rails路由中的块?

我正在使用Rails 3.我想知道如何将params传递给routes.rb某些块。 我正在尝试做的是catch all路径,从slugs数据库检查id的模型名称。 获取model name我将其复数以获取控制器名称。 match ‘/:id’, :controller => proc { Slug.find_by_iid(params[:id]).model.pluralize }, :action => :show 表slugs model iid —– —– post 4d2c7de0c5abe7f8a9000007 item 4d2c7de0c5abe7f809000004 当我尝试访问像/4d2c7de0c5abe7f8a9000007这样的页面时出现此错误: Started GET “/4d2c7de0c5abe7f8a9000007” for 127.0.0.1 at 2011-01-12 00:04:31 +0200 ActionController::RoutingError (wrong constant name #<Proc:0x0000010337c310@): Rendered /Users/amr/.rvm/gems/ruby-1.9.2-p136@rails3/gems/actionpack-3.0.3/lib/action_dispatch/middleware/templates/rescues/routing_error.erb within rescues/layout (1.2ms) 预计是指向post#view with iid:4d2c7de0c5abe7f8a9000007