Tag: 路由

Rail Routes:带有约束的控制器命名空间(子域)

目的是创建一个子域来保存所有管理function(CRUD),子域名称为“ admin ”。 负责的控制器组也在“ admin ”的命名空间下组织,即控制器位于app / controllers / admin目录下 。 理想情况下,应遵循以下路线 admin.mydomain.com/products/ admin.mydomain.com/products/new … 而不是 admin.mydomain.com/admin/products/ admin.mydomain.com/admin/products/new … 我想使用“admin”前缀保留帮助程序,例如: new_admin_product edit_admin_product 我当前的路由代码有效,如下所示: constraints :subdomain => “admin” do scope :module => “admin”, :as => “admin” do resources :players end end 这是正确的方法吗?

如何将自定义RESTful路由添加到Rails应用程序?

我正在读这两页 resources Adding more RESTful actions Rails指南页面显示 map.resources :photos, :new => { :upload => :post } 及其相应的URL /photos/upload 这看起来很精彩。 我的routes.rb显示了这一点 map.resources :users, :new => { :signup => :get, :register => :post } 当我这样做: [~/my_app]$ rake routes 我看到添加了两条新路线 signup_new_user GET /users/new/signup(.:format) register_new_user POST /users/new/register(.:format) 注意包含/new ! 我不希望这样。 我只想要/users/signup和/users/register (如Rails Routing Guide中所述)。 有帮助吗?

rails结构化嵌套资源的路由/控制器/视图

我有以下结构的rails应用程序: user has_many posts post has_many post_comments post_comment has_many comment_replies 我打算使用以下路线来避免深度嵌套。 resources :posts do resources :post_comments, module: :posts end resources :comments do resources :comment_replies, module: :post_comments #is this module a good choice? end 这给出了以下控制器结构 post_comments GET /posts/:post_id/comments(.:format) posts/comments#index POST /posts/:post_id/comments(.:format) posts/comments#create new_post_comment GET /posts/:post_id/comments/new(.:format) posts/comments#new edit_post_comment GET /posts/:post_id/comments/:id/edit(.:format) posts/comments#edit post_comment GET /posts/:post_id/comments/:id(.:format) posts/comments#show PATCH /posts/:post_id/comments/:id(.:format) […]

Rails命名空间与嵌套资源

假设我的应用程序有两个型号,Foo和Bar。 Foo可选择belongs_to Bar。 现在我可以查看单个Foo,或者搜索特定的Foo,而FoosController可以处理所有这些。 我的URL就像: foos/1和foos/new 有时我想看一个酒吧。 BarsController处理它,我得到它: bars/1或bars/1/edit 。 如果我正在看一个酒吧,我可能想浏览那个酒吧的所有Foos。 所以,我想使用bars/1/foos/来看看那些Foos。 嵌套资源非常简单,它看起来像这样: resources :foo resources :bar do resources :foo end 然而,作为酒吧的一部分的Foos有点特别,与常规的Foos不同。 所以,举例来说,如果我加载foos/1或bars/1/foos/1 ,我会看同样的Foo,但我会关注每种情况下的不同信息。 因此,我一直在考虑使用BarFoos控制器来处理Foos,因为它们处于Bar的环境中。 但是,如果我将BarFoos嵌套在Bar下,那么我的助手就像bar_bar_foos_path和new_bar_bar_foo_path 。 这似乎是多余的。 所以,现在我正在考虑命名空间,这是我以前从未研究过的。 我在rails指南中看到我可以定义: namespace “bar” do resources :foos end 如果我这样做,我可以在app/bar/下创建第二个FoosController ,并且FoosController可以使用bar_foo_path(:id)而不是bar_bar_foo_path(:id)等好帮手来处理Bar内部的Foos。 但是,如果我这样做,我的BarsController会发生什么? 如果不是resources :bars请求如何被路由到BarsController resources :bars我有namespace “bar” ? 而且,最后,在我的辅助FoosController中我需要做些什么特别的事情来确保与顶级FoosController没有名称冲突? 我意识到路由说“命名空间”,但其余的ruby代码如何知道app/bar/foos_controller和app/foos_controller不是同一个类? 谢谢!

Active Admin Ruby on rails Dashboard Controller Error

突然间,我的应用程序似乎已经开发了一个路由错误uninitialized constant DashboardController 我正在使用ActiveAdmin(0.6.0)运行Rails 3.2.0,直到今天一切似乎都运行正常。 日志报告在尝试运行localhost:3000时发生以下错误: Started GET “/” for 127.0.0.1 at 2013-04-04 18:59:21 +0100 ActionController::RoutingError (uninitialized constant DashboardController): activesupport (3.2.0) lib/active_support/inflector/methods.rb:226:in `block in constantize’ activesupport (3.2.0) lib/active_support/inflector/methods.rb:225:in `each’ activesupport (3.2.0) lib/active_support/inflector/methods.rb:225:in `constantize’ actionpack (3.2.0) lib/action_dispatch/routing/route_set.rb:62:in `controller_reference’ actionpack (3.2.0) lib/action_dispatch/routing/route_set.rb:47:in `controller’ actionpack (3.2.0) lib/action_dispatch/routing/route_set.rb:26:in `call’ journey (1.0.4) lib/journey/router.rb:68:in `block in call’ journey (1.0.4) lib/journey/router.rb:56:in `each’ […]

如何将操作路由到Rails 3中的应用程序控制器?

我正在使用gem rails3-jquery-autocomplete并且没有任何问题,但是我现在已经将我的自动完成表单移动到应用程序模板中,因此ajax调用现在由应用程序控制器处理,因此我的路由已从以下更改: home/autocomplete_category_name 现在需要删除主页并从以下路径: home_autocomplete_category_name_path 至: autocomplete_category_name_path 有人有任何想法吗? 还在学习Rails的来龙去脉,所以现在这对我来说是个死胡同。 谢谢。

Rails 3如何使用link_to更改d​​b中布尔值的值?

我正在尝试创建一个简单的链接,允许管理员批准我的网站上的用户 与这个家伙的尝试非常相似: 在Rails 3中如何使用button_to来改变布尔值? 这是它应该如何工作: 管理员单击链接以批准用户 该链接调用UsersController中的activate函数 活动函数调用用户建模 用户模型将已批准的属性更新为true并保存 这就是我要做的事情 在我的用户#index视图中 “index”, :method => ‘activate’, :id => user.id, :class => ‘btn btn-mini btn-danger’ %> 在我的userController中 def activate @user = User.find(params[:user]) @user.activate_user end 在我的用户模型中 def activate_user self.approved = ‘true’ self.save end 和我的路线 devise_for :users, :controllers => { :registrations => “registrations” } resources :users do member do […]

使用`config.exceptions_app = self.routes`在Rails 3.2中解决错误

根据这篇文章: My five favorite “hidden” features in Rails 3.2 处理错误的最新方法如​​下所示: # application.rb: config.exceptions_app = self.routes #routes.rb match “/404”, to: “site#not_found” 但是,他没有说明rails错误应用程序还处理500个错误,422个错误(以及可能还有其他错误传递给这两个页面的事实?) 所以我一起攻击了一个看起来像这样的解决方案: # routes.rb rack_error_handler = ActionDispatch::PublicExceptions.new(‘public/’) match “/422” => rack_error_handler match “/500” => rack_error_handler 它的好处在于它使我的500页轻量级。 我还应该抓住其他错误吗? 我的理解是,虽然500页现在将使用两个机架应用程序,但它仍然可以安全地与主Rails应用程序隔离。 这很强吗? 谢谢!

Rails路由 – 如何使它们不区分大小写?

Ruby on Rails中的路由区分大小写。 似乎有人在此之前提出了这个问题,并且它已经被标记为无法修复。 http://rails.lighthouseapp.com/projects/8994/tickets/393-routes-are-case-sensitive 这让我感到很不幸,因为我并没有看到我自己申请路由区分大小写的任何好处,而在不利方面它会产生混淆的可能性以及我认为缺乏修饰的普遍表现。 什么是使我的路线不区分大小写的最佳方法? 我在Google搜索中找到了这个提示: map.connect “web_feeds/:action”, :controller => ‘web_feeds’, :action => /[a-z_]+/i 这很聪明,但它仍然使URL的web_feeds部分区分大小写。 我没有看到任何类似的方法,但是,没有手动输入每个可能的wEb_feEds组合,但这显然是一个可怕的解决方案,无论多种原因。

Rails pages_controller_spec.rb测试不应该失败,但是,错误?

在Mac OS X 10.7上一直关注Michael Hart rails 3.0版的Rails教程 $ rspec spec / ……FF Failures: 1) PagesController GET ‘help’ should be successful Failure/Error: get ‘help’ ActionController::RoutingError: No route matches {:controller=>”pages”, :action=>”help”} # ./spec/controllers/pages_controller_spec.rb:45:in `block (3 levels) in ‘ 2) PagesController GET ‘help’ should have the right title Failure/Error: get ‘help’ ActionController::RoutingError: No route matches {:controller=>”pages”, :action=>”help”} # […]