2010-03-02 11 views
1

을 HAML 형식으로 사용하고 있습니다.HAML 템플릿에서 Formtastic을 사용하여 레코드를 업데이트하는 중 오류가 발생했습니다.

- semantic_form_for @company do |f| 
    - f.inputs do 
    = f.input :description 
    = f.input :type 
    = f.input :industry 
    = f.input :hq 
    = f.input :products 
    = f.input :subsidiaries 
    = f.input :employees 
    = f.input :revenue 
    = f.input :net_income 
    = f.buttons 

기존 레코드를 저장하려고하면 오류가 발생합니다.

Template is missing 
Missing template companies/update.erb in view path app/views 

최근 양식을 ERB에서 HAML (으)로 마이그레이션했습니다. ERB에서 일하는 데 사용 된 양식.

이 문제를 어떻게 해결합니까?

편집

이 문제가 해결되었습니다. HAML 또는 Formtastic과 관련이 없습니다. 블록을 save 메쏘드로 전달했는데 그 문제가 발생했습니다. 자세한 내용은 아래의 내 대답을 참조하십시오.

답변

1

이 오류의 원인을 발견했습니다. 나는 OAuth 플러그인을 사용했던 다른 프로젝트의 컨트롤러 코드를 재사용했다. OAuth 플러그인을 사용하려면 블록을 ActiveRecord save 메소드로 전달해야합니다. 바닐라 ActiveRecord save은 블록을 지원하지 않습니다. 블록을 제거하면 모든 것이 작동합니다. 원래 코드 :

def update 
    @company.attributes = params[:company] 
    @company.save do |result| 
     if result 
     flash[:notice] = "Successfully updated company." 
     redirect_back_or_default root_url 
     else 
     render :action => 'edit' 
     end 
    end 
    end 

일부 참고 자료는 :

Article 1

Article 2

0

레일 응용 프로그램/뷰/회사 /라는 update.something.erb에서보기 파일 (아마 update.html.erb)를 찾고 있습니다. 내 짐작으로, 대신 update.html.haml 파일을 가지고 있기 때문에 오류가 발생하는 것입니다.

어느 쪽이든, 이것은 Formtastic과 아무 관련이 없습니다.

app/views/companies에는 어떤 파일이 있습니까?

+0

나는이 문제를 해결. HAML 또는 Formtastic과 관련이 없습니다. 블록을 save 메소드에 전달하고 있는데 문제가 발생했습니다. 자세한 내용은 내 대답을 참조하십시오. –

관련 문제