레일 라우터 및 폼 생성기에 문제가 있습니다. 내 응용 프로그램에는 모델 및 컨트롤러에 대한 네임 스페이스 모듈이 있습니다. 모듈은 다른 프로젝트를보다 쉽게 추상화하는 데 사용됩니다.모듈 접두사가없는 경로로 이름이 붙은 모델 객체 경로 경로
내가 "못생긴"경로 도우미가 없으므로 routes.rb
범위 방법 대신 네임 스페이스를 사용합니다. 내 경로 대신에만 taxonomy_path
undefined method `taxonomy_taxonomy_path'
: 나는 오류가 발생 :
scope module: :taxonomy do
resources :taxonomies do
resources :terms
end
end
문제는 내가 분류를 편집 (taxonomies/1/edit
URL을) 할 때이다 :
그것은처럼 보인다
경로가 form_for @taxonomy
에 도달하는 방법이 어떤 범위에 있습니까? 사용하지 않고 치료할 수없는 form_for @taxonomy, url: taxonomy_path(@taxonomy)
.
module Taxonomy
class Taxonomy < ActiveRecord::Base
has_many :taxonomy_terms, inverse_of: :taxonomy
has_many :terms, through: :taxonomy_terms
class Term < ActiveRecord::Base
has_one :taxonomy_term, inverse_of: :term
has_one :taxonomy, through: :taxonomy_term
와 컨트롤러 : respond_with @taxonomy
내 컨트롤러 방법에 @taxonomy 객체는 항상 taxonomy_taxonomy_url
내 모델 refereces 때문에
module Taxonomy
class TaxonomiesController < ApplicationController
이것에 관해 하나의 질문이 있습니다. 이름 공간 접두사 "Taxonomy ::"없이 모델에 액세스 할 필요가 없을 때 네임 스페이스의 변경 모델 이름을 사용한 솔루션이 완벽합니다. 그러나 모듈 모델의 불충분 한 격리, 비표준 레일의 동작 또는 무엇인가와 같이 중요해야 할 문제가 있습니까? – rado
나는 당신의 질문을 완전히 이해하지 못했습니다 - 당신은 이제 당신의 코드에서'Taxonomy :: Taxonomy' 대신에'Taxonomy'에 의해 Taxonomy 클래스에 접근한다는 것을 의미합니까? –
물론 나쁘다. 모델이 아니라 모듈을 호출한다. 내 질문은 변경 모델 이름은 contra 생산적이지 않은 경우에만 경로 경로/URL을 접두사없이해야합니다. 업그레이 드 레일 등 미래의 문제와 마찬가지로 ... – rado