Tag: 命名空间

Rails:form_for命名空间资源

我想为用户设置CRUD,仅适用于我的Web应用程序的管理员。 所以在routes.rb中: namespace :admin do resources :user end 这意味着: admin_user_index GET /admin/user(.:format) admin/user#index POST /admin/user(.:format) admin/user#create new_admin_user GET /admin/user/new(.:format) admin/user#new edit_admin_user GET /admin/user/:id/edit(.:format) admin/user#edit admin_user GET /admin/user/:id(.:format) admin/user#show PUT /admin/user/:id(.:format) admin/user#update DELETE /admin/user/:id(.:format) admin/user#destroy 显示,索引工作正常,但编辑和新的不。 我在_form第一行继续收到此错误: ###:0x007fb6645c6378>的未定义方法`user_path’ 这是这样的: 如何将form_for与命名空间资源一起使用?

命名空间和Mixins

我正在尝试清理我们的命名空间。 基本上我们的设置有点像 class myClass include myModule1 include myModule2 @important_var #critical instance variable 基本上@important_var是一个telnet处理程序,几乎所有方法都需要它。 这适用于它现在设置的方式。 不幸的是myModule1和myModule2变得越来越大。 所以我继续遇到方法的命名空间冲突。 我喜欢用模块包装器访问方法,例如: myClass_instance.myModule1.a_method 但我无法弄清楚如何做到这一点或其他更干净的名字间距的想法?

Rails中的Namespaced模型生成NameError:未初始化的常量

我有这样的文件夹结构: app/ models/ bar/ foo.rb connection.rb foo.rb connection.rb是一个用于连接到另一个数据库的“抽象类”,因此: class Bar::Connection < ActiveRecord::Base self.abstract_class = true establish_connection "outsidedb_#{Rails.env}" end bar/foo.rb用于从foos访问foos表,因此: class Bar::Foo < Bar::Connection end 并且foo.rb用于从应用程序的db访问foos表,因此: class Foo < ActiveRecord::Base end 从rails控制台,如果我做Foo.first或Bar::Foo.first事情就像我期望的那样,我分别从应用程序db和外部数据库的foos表中获得第一个条目。 但是,如果我尝试从bar/foo.rb访问Foo ,我会得到以下结果: class Bar::Foo works Foo.first #=> NameError: uninitialized constant Bar::Foo::Foo end def self.other_test Foo.parent #=> Object Foo.superclass #=> ActiveRecord::Base Object::Foo.first #=> works ActiveRecord::Base::Foo.first […]

如何判断是否已在模块命名空间中定义了Constant,而不是全局命名空间?

我有两个同名的Const; 一个是全局const,另一个是在命名空间Admin下定义的。 但是我需要区分它们;全局的已经定义了,如果还没有定义,则需要自定义范围: A = ‘A Global Const’ module Admin A = ‘A Const within the Admin namespace’ if const_defined? ‘A’ # always true and the Admin::A can never be defined! end puts A # => ‘A Global Const’ puts Admin::A # => NameError: uninitialized constant Admin::A # the Admin::A will never be defined. 但是如果定义了全局A,那么“const_defind?” […]

在Ruby中命名命名空间的首选方式(更好的样式)是什么? 单数还是复数?

什么是使用的利弊: FooLib::Plugins FooLib::Plugins::Bar 与 FooLib::Plugin FooLib::Plugin::Bar 命名惯例? 你会用什么或者你用的是什么? 在社区中更常用的是什么?

如何在Ruby中访问基本命名空间?

我在存在File模块的命名空间中编写代码(在另一个模块中) 我需要访问ruby File类。 在php中,这可以这样做:\ File 如何在ruby中做到这一点?

Ruby已经在使用我的模型的类名

我正在制作一个具有各种授权级别的论坛应用程序,其中一个是Monitor。 我这样做是通过扩展我的User类来实现的,我计划用“-ship”类(例如管理员,作者,主持人等)对其进行微调。 显然,Monitor类是ruby mixin的一部分。 如何在没有冲突的情况下保留我的资源名称?

如何在ruby中引用子模块的“完整路径”?

在我的应用程序中,我有 VeryUniqueModule::Foo # and… VeryUniqueModule::Bar Foo和Bar各自提供不同的服务。 我的应用程序的一部分必须动态地找出要引用的模块,它可以这样做: def service_api # @relevant_object.service is a string that is either ‘Foo’ or ‘Bar’ VeryUniqueModule.const_get(@relevant_object.service) end 稍后会详细介绍。 我刚刚更新了一个库,它现在有了自己的顶级Foo类(这是一个糟糕的设计)。 现在,当我尝试调用@relevant_object.service_api::A_CONSTANT ,我的应用程序抱怨库的 Foo没有A_CONSTANT 。 回到上面的service_api – 我认为const_get正在返回类本身。 事实上我知道它是。 如果我在irb启动它,一切都如预期的那样 – 返回值是类本身,我可以调用类中的东西。 所以… 首先如何存在名称空间冲突? 我正在寻找A_CONSTANT返回的Class对象上的A_CONSTANT ,而不是我正在eval的字符串或类似的那些时髦的东西 – 应该没有任何名称空间问题,我直接指的是一个对象! 如果这确实是一个问题,我如何修复service_api以便它返回erm“完整路径”?

对Ruby命名空间使用“::”而不是“module …”

在Ruby中,编写class Foo::Bar和module Foo; class Bar之间有区别module Foo; class Bar module Foo; class Bar ? 如果是这样,什么?

Ruby命名空间

我是一个非常新的ruby,来自php背景,但有些东西没有点击我。 所以,假设我有一个Ruby on Rails应用程序,我正在对我的API进行版本控制: app |_controllers |_api | |_v1 | | |_application_controller.rb | | |_user_controller.rb | |_application_controller.rb |_application_controller.rb 具有类结构 # Versioned API V1 app controller module Api module V1 class ApplicationController end end end # Versioned API app controller module Api class ApplicationController end end # Root app controller class ApplicationController end #The code in […]