Tag: 命名空间

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’ […]

Rails 3:嵌套资源中的不同命名空间?

有没有办法在嵌套资源中使用(不同的)命名空间? 例如,我有: resources :users do resources :tags end 我想将标签控制器放在控制器/公共控制器中,同时将用户控制器放在控制器/用户中,并使用等效的模板。 如果我试试这个: namespace :user do resources :users do namespace :common do resources :tags end end end 我会得到多余的路线名称: user_common_tags等。但我想要像common_tags这样的东西

Rails中的模块路由with form_for(@object)

我有命名空间Controller Entities :: Customers class Entities::CustomersController < ApplicationController … end 和命名空间的ActiveRecord模型: class Entities::Customer < Entities::User end 在我的routes.rb文件中我有: resources :customers, module: :entities 模块:实体在那里,因为我不想拥有如下路线: / entities / customers但仅限于: /客户 。 问题在我渲染表单时开始: 抛出错误:类的未定义方法`entities_customer_path’.. 所以错误是rails认为正确的路径是前缀实体。 耙路给我: Prefix Verb URI Pattern Controller#Action customers GET /customers(.:format) entities/customers#index POST /customers(.:format) entities/customers#create new_customer GET /customers/new(.:format) entities/customers#new edit_customer GET /customers/:id/edit(.:format) entities/customers#edit customer GET /customers/:id(.:format) […]

如何在不同的命名空间Rails 4.2中遵循DRY原则?

基本上我开发了一个有两个命名空间的应用程序: admin , api和public(只是resources :users例如resources :users )。 一切正常,但我正在重复自己,因为api一些控制器可以很容易地用于admin 。 在这种情况下如何保留命名空间? 谢谢!

将Devise与多个名称空间用于同一个Model

我想使用具有两个名称空间的Devise:API名称空间和默认名称空间,但是当用户尝试登录时,这两个名称似乎是冲突的。意思是,引用Devise的任何名称空间最终都是最终的重定向位置。 例如:如果我尝试在默认命名空间下创建新会话,它将在该用户会话路径上失败,然后尝试在API / v1会话路径上创建会话。 如何让两者独立行动? 它们都引用了User对象。 默认命名空间的user_sessions控制器是“user_sessions”。 API / V1命名空间的user_sessions控制器是’/ api / v1 / user_sessions’ —- ROUTES.RB ——- MySite::Application.routes.draw do namespace :api do namespace :v1 do devise_for :users,:controllers => { :sessions => “api/v1/ user_sessions”,:registrations=>”users” } …… end end devise_for :users,:controllers => { :sessions =>”user_sessions”,:registrations=>”users” } do post ‘users/sign_in’ => ‘user_sessions#create’, :as => :user_session get ‘users/sign_in’ […]

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 […]

如何按属性值搜索

我有以下XML文档: foo1 foo2 data1 data2 foo3 foo4 我只需要抓取type = “foo:elementType1″的元素。 我尝试过这个,但是我得到了空洞的结果。 elems = doc.search(“//elements[@type=’foo:elementType1′]”) 我错过了什么?

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不是同一个类? 谢谢!

嵌套命名空间路由转向错误的控制器

使用Rails 3.0.7,我正在为我们的应用程序创建一个API,我有这个设置: 的routes.rb namespace :api do namespace :v1 do match “connect” => “users#login”, :via => :post match “disconnect” => “users#logout”, :via => :post resources :users match “users/:id/foos” => “foos#list”, :via => :get match “users/:id” => “users#update”, :via => :put match “foos/:id/bars” => “bars#list_by_foo”, :via => :get match “foos/:id” => “foos#show”, :via => :get, :constraints => […]

Rails – Savon设置了多个名称空间

我正在使用savon版本2 (使用Ruby on Rails)来调用web服务,我需要为我的Envelope注入一些额外的命名空间。 就像是: <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:add="http://schemas.xmlsoap.org/ws/2003/03/addressing" xmlns:newNamespace1="http://someURL.pt/Test1" xmlns:newNamespace2="http://someURL.pt/Test2" xmlns:newNamespace3="http://someURL.pt/Test3" 我目前的代码是: client = Savon.client do wsdl “https://someValidURL?wsdl” namespace “http://someURL.pt/Test1” namespace “http://someURL.pt/Test2” namespace “http://someURL.pt/Test3” end response = client.call( …the webservice call… ) …但在我的请求中,Savon只放置最后一个命名空间 我没有在Savon Git项目中找到任何关于此的文档。 有没有人有这个问题的解决方法? PS-我还检查一个可能的解决方案是将所有xml请求(信封)设置为请求但是……嗯…太像黑客了。 如果这是不可能的,还有其他好的gem可以做到这一点,请告诉我=)