나는 신비한 문제가 있습니다. 아주 간단한 Ruby 앱에는 세 가지 클래스가 있습니다 : 드라이버, 작업 및 차량. 세 클래스는 모두 ID와 이름으로 구성됩니다. 세 개의 클래스 모두 #index와 #show 메소드가 동일하며 JSON 또는 XML로만 렌더링됩니다 (실제로 모든 CRUD 메소드에 적용됩니다. 이름은 같지만 이름은 동일합니다). 보기가 없습니다. 예를 들어 :뷰가없는 XML/JSON으로 라우팅되는 레일
def index
@drivers= Driver.all
respond_to do |format|
format.js { render :json => @drivers}
format.xml { render :xml => @drivers}
end
end
def show
@driver = Driver.find(params[:id])
respond_to do |format|
format.js { render :json => @driver}
format.xml { render :xml => @driver}
end
end
모델은 유사 최소한 있습니다 만 포함 :
routes.rb에서class Driver< ActiveRecord::Base
validates_presence_of :name
end
내가 가진 :
map.resources :drivers
map.resources :jobs
map.resources :vehicles
map.connect ':controller/:action/:id'
map.connect ':controller/:action/:id.:format'
내가 GET, POST가 생성/수행 할 수 있습니다/색인 3 개의 클래스 모두에서 PUT/업데이트를 수행하고 GET/read는 "많은 폴리 폼이 있습니다"ActiveRecord 플러그인을 설치하고 environment.rb에 추가 할 때까지 작동합니다.
require File.join(File.dirname(__FILE__), 'boot')
require 'has_many_polymorphs'
require 'active_support'
이제 세 가지 클래스 중 두 가지에 대해 더 이상 읽을 수 없습니다. XML에 잘 3000/드라이버 그들은 모두 목록을하지만 난 로컬 호스트로 이동하는 경우 : 내가 로컬 호스트에 가면이 다른 예기치하여를 다음에
Processing DriversController#show (for 127.0.0.1 at 2009-06-11 20:34:03) [GET]
Parameters: {"id"=>"3"}
[4;36;1mDriver Load (0.0ms)[0m
[0;1mSELECT * FROM "drivers" WHERE ("drivers"."id" = 3) [0m
ActionView::MissingTemplate
(Missing template drivers/show.erb in view path app/views):
app/controllers/drivers_controller.rb:14:in `show'
...etc
: 3000/드라이버/3 오류가 발생합니다 오류 :
Processing ApplicationController#show (for 127.0.0.1 at 2009-06-11 21:35:52)[GET]
Parameters: {"id"=>"3"}
NameError (uninitialized constant ApplicationController::AreaAccessDenied):
...etc
여기에 무슨 일이 일어나고 있습니까? 한 클래스에서 같은 코드가 작동하지만 다른 두 클래스에서는 작동하지 않는 이유는 무엇입니까? ApplicationController에 #view를 쓰려고하는 이유는 무엇입니까?
세 가지 클래스 각각에 대해 간단한 HTML보기를 만들면 정상적으로 작동한다는 것을 알게되었습니다. 각 클래스에 내가 추가 :이
format.html # show.html.erb
을 장소에, 에가는 로컬 호스트 : 3000/드라이버/3가 HTML에서 항목을 렌더링하고 내가 로그에 오류를 얻을 수 없습니다. 그러나 URL에 .xml을 첨부하면 두 개의 클래스 (이전과 같은 오류 메시지 사용)에서 다시 실패하고 XML은 예상대로 출력됩니다. JSON 렌더링을 트리거하기 위해 .js를 URL에 추가 할 때 두 가지 실패한 클래스에서 낯선 사람이라도 대신 HTML 출력을 얻습니다!
"has many polymorphs"플러그인과 관련이 있습니까? 설치 후 라우팅 문제가있는 것으로 들었습니다. environment.rb에서 "많은 다형성을 가지고 있습니다"및 "능동적 인 지원"을 제거하면 (그리고 서버를 재부팅해도) 아무런 차이가없는 것처럼 보입니다. 그러나 내 문제는 그것이 설치 된 후에 시작되었습니다. 나는 지금이 문제에 대해 많은 시간을 보냈으며 조금 절박 해지기 시작했다. 구글은 사실 초등 정보를 찾지 못했기 때문에 초등학생을 놓친 것 같아 보인다. 계몽 또는 힌트를 기꺼이 받아 들였습니다! 당신이 설치 한 경우
JS
은 아마도 내 설치에 대한 몇 가지 세부 사항을 추가해야합니다 레일 (2.3.2) 액티브을 (2.3.2, 2.2.2) activeresource (2.3.2, 2.2.2) has_many_polymorphs (2.13) 잡종 (1.1.5) mysql (2.7.3) –