Tag: 路由

如何使用Rspec测试具有嵌套路由的控制器?

我有两个控制器,我使用铁轨脚手架发电机创建。 我希望它们嵌套在一个名为“demo”的文件夹中,然后运行 rails g scaffold demo/flows rails g scaffold demo/nodes 然后我决定在流内嵌套节点,并改变我的路由文件,如下所示: namespace :demo do resources :flows do resources :nodes end end 但是这种变化导致了对节点的rspec测试破坏了ActionController :: Routing错误。 15) Demo::NodesController DELETE destroy redirects to the demo_nodes list Failure/Error: delete :destroy, :id => “1” ActionController::RoutingError: No route matches {:id=>”1″, :controller=>”demo/nodes”, :action=>”destroy”} 问题是rspec正在寻找错误的路线。 它应该寻找“demo / flows / 1 / nodes”。 它还需要一个模拟流程模型,但我不知道如何提供。 […]

使用方法:设计after_sign_up_redirect?

我试着按照这里的说明( GitHub Devise Wiki ),但它不适合我。 我想在用户注册后让Devise重定向到/ welcome。 我创建了一个注册控制器,但它永远不会进入视图。 我在这做错了什么? Ruby 1.9.2 Rails 3.1.0.rc4 Devise 1.4.2 谢谢 更新: 由于某种原因,未触发after_sign_up_path_for但触发了after_sign_in_path_for 。 我仍然想让after_sign_up_path_for工作 _app /控制器/ registrations_controller.rb_ class RegistrationsController < Devise::RegistrationsController protected def after_sign_up_path_for(resource) welcome_path end end 这是我的config / routs.rb MyApp::Application.routes.draw do devise_for :users root :to => ‘pages#home’ match “/users”, :to => “users#all” match “/users/:id”, :to => “users#show”, :as […]

Rails路由,URL和子域

我的ruby应用程序分为不同的命名空间。 喜欢:free(free.domain.com),pro(pro.domain.com),vip(vip.domain.com)在routes文件中如下所示: namespace :free do match ‘home’ => ‘free#home’, :via => [:get, :post], :as => :home #more routes end namespace :pro do match ‘home’ => ‘pro#home’, :via => [:get, :post], :as => :home #more routes end namespace :vip do match ‘home’ => ‘vip#home’, :via => [:get, :post], :as => :home #more routes end match ‘/about’ […]

无法使用after_inactive_sign_up_path_for进行路由

我重写了RegistrationController my_devise / Registration控制器我重写了以下方法: def after_inactive_sign_up_path_for(resource)awaiting_confirmation_path 结束 我的RegistrationController中还有一个名为的新方法:def awaiting_confirmation(resource)do tuff …. 结束 我的路由文件看起来像这样: devise_for:accounts,:controllers => {:registrations =>“my_devise / registrations”} 资源:注册匹配“awaiting_confirmation”=>“注册#awaiting_confirmation”结束 我收到一条错误消息:没有路由匹配{:action =>“awaiting_confirmation”,:controller =>“registrations”} 我究竟做错了什么?

Rails 3路由具有多个可选参数

我正在尝试创建一个具有可选参数以及变化顺序的Rails路由。 这个问题描述了一个类似的问题: 具有多个,可选和漂亮参数的路由 我正在尝试创建其中包含地图filter的路线,例如参数但没有参数URL样式。 想法是让它们看起来像 /search/country/:country/ /search/country/:country/state/:state/ /search/country/:country/state/:state/loc/:lat/:long/ 但你也应该能够搜索 /search/state/:state/ /search/state/:state/country/:country/ /search/loc/:lat/:long/ 我知道我可以使用路由通配来编写复杂的正则表达式语句 – 但是我想知道是否有一种方法可以使用未指定顺序的多个可选路由参数,类似于 /search/( (/country/:country)(/state/:state)(/loc/:lat/:long) ) 谢谢!

Rails 3使用嵌套资源进行路由错误

在我的Rails应用程序中,有很多游戏,每个游戏都有自己的排行榜。 因此,将排行榜嵌套在游戏中是有道理的,因此您只能通过游戏进入排行榜。 我设置了我的routes.rb文件(重要部分): resources :games do resources :leaderboards end 所以我更新了我的控制器,以便从传入的game_id获得适当的游戏,并从中获取排行榜信息。 但是,我的问题来自我的观点。 在本节中(从脚手架自动生成的视图): ‘Are you sure?’, :method => :delete %> 代码破解说: No route matches {:action=>”edit”, :controller=>”leaderboards”, :game_id=>#} 这一行,结果是错误:(我的代码中的第19行) 删除此行,视图呈现正常。 因此,URL部分已损坏,但我该如何解决? 奇怪的是,我在Show视图中确实有“edit_game_leaderboard_path”,它运行正常……我做错了什么?

无路由匹配:使用嵌套命名空间时缺少必需的

这是我的routes.rb填充 Rails.application.routes.draw do namespace :main, path: ‘:master_url’ do root ‘sites#index’ namespace :dashboard do root ‘dashboards#index’ #get ‘masters/index’ resources :masters end get “/:action” => ‘sites#:action’ end root ‘main/sites#index’ end 这是命令耙路线 main_root GET /:master_url(.:format) main/sites#index main_dashboard_root GET /:master_url/dashboard(.:format) main/dashboard/dashboards#index main_dashboard_masters GET /:master_url/dashboard/masters(.:format) main/dashboard/masters#index POST /:master_url/dashboard/masters(.:format) main/dashboard/masters#create new_main_dashboard_master GET /:master_url/dashboard/masters/new(.:format) main/dashboard/masters#new edit_main_dashboard_master GET /:master_url/dashboard/masters/:id/edit(.:format) main/dashboard/masters#edit main_dashboard_master GET /:master_url/dashboard/masters/:id(.:format) […]

polymorphic_path不生成正确的路径

我正在尝试使用名为polymorphic_path的rails方法,但我得到了错误的url。 我的多态关联是学生和房东,他们都是可用的用户。 这是我的模特: class User < ActiveRecord::Base belongs_to :userable, polymorphic: true end class Student :userable end class Landlord :userable end 我有一个名为current_user的变量,它包含User对象。 以下行: 给我url“users / 22”而不是返回学生/房东url。 这是我的routes.rb文件,如果这有帮助.. resources :users resources :students resources :landlords 我哪里错了? 谢谢!

Rails – 从单独的设置控制器编辑用户和配置文件模型

我正在努力弄清楚如何让它工作,但基本上我有2个模型: class User class Profile 一个用户有一个配置文件。 我还有一个带有“配置文件”和“更新”操作的SettingsController: class SettingsController < ApplicationController def profile @profile = User.find_by_id(current_user).profile end def update set_profile respond_to do |format| if @profile.update(profile_params) format.html { redirect_to @profile, notice: 'Profile was successfully updated.' } else format.html { render :edit } end end end private def profile_params params.require(:profile).permit(:name) end end 和/ settings / profile页面: Settings […]

将Rails 3.0升级到3.1时,路由停止工作

我使用Ruby 1.8.7与Rails 3.1。 我的应用程序在Rails 3.0中运行良好,但是当我把它提升到Rails 3.1.4时,我所有的url帮助程序都破了! 在过去两天谷歌搜索疯子之后,我已经放弃了,现在是时候寻求帮助了。 我不相信问题是我的routes.rb文件,但在视图/帮助方面更多。 我的routes.rb中有以下内容: resources :sessions 在我的主页视图中,我有以下link_to,其中出错: 当我做rake路由时,我得到以下输出,所以路径存在: sessions GET /sessions(.:format) {:controller=>”sessions”, :action=>”index”} POST /sessions(.:format) {:controller=>”sessions”, :action=>”create”} new_session GET /sessions/new(.:format) {:controller=>”sessions”, :action=>”new”} edit_session GET /sessions/:id/edit(.:format) {:controller=>”sessions”, :action=>”edit”} session GET /sessions/:id(.:format) {:controller=>”sessions”, :action=>”show”} PUT /sessions/:id(.:format) {:controller=>”sessions”, :action=>”update”} DELETE /sessions/:id(.:format) {:controller=>”sessions”, :action=>”destroy”} 当我在浏览器中转到/ sessions / new时,页面再次加载,路由存在,但它在基于_path的url上出错: :post do -%> 我得到的错误如下: ActionView::Template::Error (undefined […]