2012-01-25 1 views
0

내 프로덕션 및 준비 서버에서 실행중인 응용 프로그램이 있습니다.외관상으로 동일한 두 서버에서 서로 다른 formtastic 동작

두 버전 모두 동일한 버전의 코드가 실행되고 있으며 서버의 레일 버전 (3.1.3), 보석, 데이터베이스 스키마는 동일합니다 ... 차이점을 찾기가 어렵습니다.

그러나 formtastic (2.0.0.rc5)로 렌더링 된 폼은 2 개의 서버에서 동일하게 렌더링되지 않습니다. 프로덕션 환경에서 Formtastic은 뷰가 관리 모듈에 있음을 올바르게 고려하지 않은 것처럼 보입니다.

문제의 부분은 app/views/admin/composers/_form.html.erb에 있고 그것의 관련 부분은 다음과 같습니다

<%= semantic_form_for @composer, :url => @composer.new_record? ? admin_composers_path : admin_composer_path(@composer) do |form| %> 
    <%= form.inputs do %> 
     <%= form.input :name %> 

... 등 ... 양식으로 예상 렌더링하는 내 스테이징 서버에서

합니다 (주의 idinput 필드)의 name :

<form accept-charset="UTF-8" action="/admin/composers" class="formtastic admin_composer" id="new_admin_composer" method="post" novalidate="novalidate"> 
    <div style="margin:0;padding:0;display:inline"> 
    <input name="utf8" type="hidden" value="&#x2713;" /> 
    <input name="authenticity_token" type="hidden" value="rotbxUCJeZJuAY6eMRKaQKYdiPN0tlfQSKIeCj6VBUE=" /> 
    </div> 
    <fieldset class="inputs"> 
    <ol> 
     <li class="string input required stringish" id="admin_composer_name_input"> 
     <label class=" label" for="admin_composer_name">Name<abbr title="required">*</abbr></label> 
     <input id="admin_composer_name" maxlength="255" name="admin_composer[name]" type="text" /> 

... 등 ...

프로덕션 서버에

그러나 (잘못된 idname 주) :

<form accept-charset="UTF-8" action="/admin/composers" class="formtastic composer" id="new_composer" method="post" novalidate="novalidate"> 
    <div style="margin:0;padding:0;display:inline"> 
    <input name="utf8" type="hidden" value="&#x2713;" /> 
    <input name="authenticity_token" type="hidden" value="qt++LTRdS+V28dvTRHA7h0vGhSKSoINP8cTjLRCk088=" /> 
    </div> 
    <fieldset class="inputs"><ol> 
    <li class="string input required stringish" id="composer_name_input"> 
     <label class=" label" for="composer_name">Name<abbr title="required">*</abbr></label> 
     <input id="composer_name" maxlength="255" name="composer[name]" type="text" /> 

... 등 ...

나는, 어쩌면 뭔가 어딘가에 캐시 것을 걱정 한 적이 있지만 제가 말할 수있는 한, 모든 것을 생산에서 재배포하도록 강요했습니다.

생각하십니까?

+0

y를하는 경우 ou 프로덕션 서버에서 스택을 가져 와서 개발 모드로두면 문제가 계속 발생합니까? –

+0

프로덕션 서버에서 응용 프로그램을 시작하지만 준비 모드를 지정한다는 의미입니까? 좋은 제안, 나는 그것을 시도 할 것이다. FWIW, 나는 2 개의 환경 사이에서 행동의 다른 약간의 차이를 알아 차렸다. 그래서 내가 놓치고있는 2 개의 다른 무엇인가 있어야한다. – denishaskin

답변

0

글쎄, 그것은 내가 이라고 생각했는데,일지도 모른다. 그러나 나는 왜 그것이 한 환경에서만 작동하는지, 다른 환경에서는 작동하지 않는지를 이해하지 못한다.

controllers/admin/composers_controller.rb 컨트롤러 내 새로운 방법은 원래처럼 보였다 : (본질적으로)

def new 
    @composer = Composer.new 
end 

하지만 관리자 모듈에서 최선을 다하는의 길을가는 이후가 될 필요가 실제로 무엇을했다 :

def new 
    @composer = Admin::Composer.new 
end 

(I 대신 비 네임 스페이스 모델을 참조하는 네임 스페이스 컨트롤러를 얻으려고 노력의 class Admin::Composer < Composer의 쉬운 트릭을 사용하고 있습니다.)