Tag: 路线

没有路线匹配“/ logout”

单击“注销”时出现以下路由错误: No route matches [GET] “/logout” 这是我的application.html.erb文件: :delete %> 这是我的routes.rb文件: get ‘admin’ => ‘admin#index’ controller :sessions do get ‘login’ => :new post ‘login’=> :create delete ‘logout’ => :destroy end get “sessions/create” get “sessions/destroy” 有人知道如何解决这个问题吗?

使用Rails 4.1 ActionMailer :: Preview预设电子邮件需要设置哪些路由?

class UserPreview < ActionMailer::Preview # Accessible from http://localhost:3000/rails/mailers/notifier/welcome_email def welcome_email UserMailer.welcome_email(User.first) end end 我使用Ruby on Rails 4.1进行了这个简单的邮件预览。 如果我注释掉我的routes.rb文件中的所有路由并且仅保留此信息,则邮件程序预览会起作用: MyTestApp::Application.routes.draw do end 显然,我的一个权利是在默认的Rails之前用于邮件预览。 我需要输入路由rb文件?

在Rails中添加路由安全性

在Rails 2中,如何防止用户只更改id#并访问其他对象? 例如 : website.com/users/1231/edit 如何阻止用户更改1231并访问其他帐户?

收集铁路3中所有路线的第一段

我正在尝试实现路由,其中​​第一个段是配置文件的别名或id: resources :profiles, :path => ” do … end 我需要validation其他(更高)路由的第一段尚未采用别名。 我现在拥有的是: validates :alias, :exclusion => {:in => Rails.application.routes.routes.map{|r| r.path.spec.to_s.split(‘(‘).first.split(‘/’).second}.compact.uniq }, …. 在开发过程中一切都很好。 在生产中Rails.application.routes.routes.map…返回空数组。 但是只有在模型中validation,如果我把它放在视图中只是为了测试它返回所有路径的第一段数组按预期。 我做错了什么或者有更好的解决方案?

Rails路由资源:地址 – Singular和Plural

我有一个地址路线: namespace :carts do resources :address 然而,它会为新路径产生误导。 这是Rails 3.2.14中的错误吗? carts_address GET /carts/address(.:format) refinery/carts/address#index POST /carts/address(.:format) refinery/carts/address#create new_carts_addres GET /carts/address/new(.:format) refinery/carts/address#new edit_carts_addres GET /carts/address/:id/edit(.:format) refinery/carts/address#edit carts_addres GET /carts/address/:id(.:format) refinery/carts/address#show

即使路由存在,Rspec命名空间路由规范也会失败

我正在使用rspec-rails(2.8.1)和rails 3.1.3 。 我正在尝试为我的Admin :: ZonesController测试路由。 我已经validation了浏览器和运行rake routes 。 我没有使用ActiveRecord(如果重要的话)。 当我运行路由规范时,它告诉我: ActionController::RoutingError: No route matches “/admin/zones/new” 这是测试(spec / routing / admin / zones_routing_spec.rb): require ‘spec_helper’ describe “routing to zones” do it “routes /admin/zones/new to admin/zones#new” do { :get => “/admin/zones/new” }.should route_to( :controller => “admin/zones”, :action => “new” ) end end 这是控制器动作我试图测试的路径(admin / zones #new): […]

ruby on rails – routes.rb – 当文件名中存在多个句点时匹配文件扩展名

我已经根据这里的说明创建了一个路由加控制器,用于在rails上的ruby中执行动态css: http://www.misuse.org/science/2006/09/26/dynamic-css-in-ruby-on-rails/ 需要一些更改才能在rails上考虑更新版本的ruby,但问题在于routes.rb条目。 原来的条目是这样的: # dynamic CSS (stylesheets) map.connect ‘rcss/:rcssfile’, :controller => ‘rcss’, :action => ‘rcss’ 这不适用于较新版本的RoR,我发现这个解决方案有效: # dynamic CSS (stylesheets) map.connect ‘rcss/:rcssfile.css’, :controller => ‘rcss’, :action => ‘rcss’ 但是,现在我感到很遗憾,我无法获得一个catch-all文件类型扩展处理程序。 请求必须具有.css扩展名。 进一步玩弄它我想出了这个: # dynamic CSS (stylesheets) map.connect ‘rcss/:rcssfile.:format’, :controller => ‘rcss’, :action => ‘rcss’ 所以这要好得多。 现在,我可以请求以.foobar或其他任何forms结束的文件,并将其与处理程序进行匹配。 不是我必然,但更多的是理解一切。 所以我尝试创建一个类似“foo.net.rcss”的文件。 现在似乎第一个点弄乱了一切。 “没有路线匹配rcss / foo.net.css”。 我的问题如下: 无论文件名中有多少个点,我如何匹配任何文件名和任何扩展名? 为什么第一个示例在以后的RoR版本中不起作用? […]

Rails,Devise:相同的资源,基于用户类型的不同控制器

我有一个资源,比如Product ,可以通过两个不同的用户类访问:比如Customer和Admin 。 这两者之间没有inheritance。 我正在使用Devise进行身份validation: # config/routes.rb devises_for :customers deviser_for :admins 我有这两个控制器: # app/controllers/customers/products_controller.rb class Customers::ProductsController < ApplicationController 和 # app/controllers/admins/products_controller.rb class Admins::ProductsController < ApplicationController 现在,根据谁登录( Customer或Admin ),我希望products_path指向相应的控制器。 我想避免使用customers_products_path和admins_products_path ,这很麻烦。 所以我已经设置了我的路线 # config/routes.rb devise_scope :admin do resources :products, module: ‘admins’ end devise_scope :customer do resources :products, module: ‘customers’ end 这不起作用。 当我以Customer身份登录时, products_path仍然指向Admins::ProductsController#index因为它是第一个定义的。 任何线索? 没有黑客行为,我想做的事情可能根本不可能。 更新根据代码 […]

使用curl测试Rails路由

我有一个名为用户的模型,我想使用API​​进行更新。 我认为这样做的方法是创建更新路由并插入执行更新的代码。 我使用RSpec创建了一个测试,它似乎工作,但是,我想实际看到我的数据库中更改的数据,所以我试图使用curl来更新我的开发数据库。 我试过这个命令 curl -X PUT -d “attribute1 = value1, attribute2 = value2” http://localhost:3000/users/1 但是我收到了一个错误 Action Controller: Exception caught . . . NoMethodError in UsersController#update You have a nil object when you didn’t expect it! You might have expected an instance of ActiveRecord::Base. The error occurred while evaluating nil.[] . . . Heres是routes.rb中的相关行 resources […]

通过路由将参数传递给控制器​​操作

可能重复: Rails:如何将自定义参数传递给控制器​​方法? 我想知道是否可以通过路由将参数传递给控制器​​动作。 我有一个通用的动作方法,我想呼吁各种路线。 不,我不能在我的路线中使用通配符。 match ‘/about’ => ‘pages#show’ match ‘/terms’ => ‘pages#show’ match ‘/privacy’ => ‘pages#show’ 我正在寻找类似的东西: match ‘/about’ => ‘pages#show’, :path => “about” match ‘/terms’ => ‘pages#show’, :path => “terms” match ‘/privacy’ => ‘pages#show’, :path => “privacy” 谢谢。