2014-11-05 3 views
0

admin이라는 네임 스페이스 아래에 컨트롤러를 생성하면 Rails가 디렉토리를 모듈로 변환하는 방법과 혼동됩니다. admin이라는 컨트롤러 폴더 아래에 폴더가 생깁니다.Ruby on Rails 모듈/디렉토리

일관된 이유로 인해 레일이 modules/namespace으로 folders으로 변경됩니다. 하지만 내 해석이 맞는지 아닌지는 모르겠다. 나는 내부 클래스 파일을 만든 반면에

이 나는이 클래스는 admin 모듈에 연결되고 싶지는 lib directory 내부의 클래스 파일을 만들려고, 그래서 나는 admin라고 lib 디렉토리 아래에 폴더를 생성 그것은 foo.rb라고하고 foo.rb 내부에서 나는 다음과 같은

module Admin 
    class Foo 

    end 
end 

그래서 난 파일을 요구함으로써 컨트롤러의 측면에서이 Foo 클래스를 호출하려고 쓴하지만 클래스 I에 도착하는 네임 스페이스를 사용하지 않았다 쓸 필요가 없었습니다 Addmin::Foo.new 방금 ​​쓴 Foo.new 나에게 이상한 일을 했어. 내가 그것을 Admin::Foo.new이라고 부르면 모듈의 필요성은 다른 한편으로는 uninitialized constant error이라고 나에게 줄 것이다. 이것은 디렉토리 생성과 thiese 디렉토리를 모듈로 간주하고이를 네임 스페이스로 사용하는 것에 대한 혼란을 일으킨다.

누구나 가볍게 밝힐 수 있습니다. !!

include Foo 

그리고 모듈을 다음과 같이 될 것입니다 :

답변

0

사실, 당신은, 당신이 controllers/concerns 폴더에 생성해야 lib 폴더에 모듈을 만들 필요가 없습니다, 다음, 다음과 같은 것이로 포함 :

module Foo 
    extend ActiveSupport::Concern 
    included do 
    # write your code 
    end 
end 

보다 약 concernsActiveSupport-concern 읽어보십시오.

+0

답변을 주셔서 감사합니다.하지만 요점은 '모듈'을 두는 곳이 아니라 레일즈가 네임 스페이스를 해석하는 폴더를 만드는 이유에 관한 것입니다. 더 이해하기 쉽지만 직접 모듈을 만들고 싶습니다. 'admin :: Foo'는'foo.rb'라고 불리는'rb file'을 가진 admin 폴더로 물리적으로 해석되어야합니다. –

+0

당신이 [레일즈 모델을 sub 경로를 모델 이름 공간없이?] (http://stackoverflow.com/questions/18934115/rails-4-organize-rails-models-in-sub-path-without-namespacing-models) –