2010-03-02 1 views
1

Я использую formatastic в форме HAML.Ошибка при обновлении записи с использованием Formtastic в шаблонах HAML

- 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

Rails ищет файл представления в приложение/просмотров/компаний/называется update.something.erb (вероятно update.html.erb). Я предполагаю, что у вас есть файл update.html.haml, поэтому вот почему вы получаете ошибку.

В любом случае, это не имеет никакого отношения к Formtastic извините.

Какие файлы вы указали в приложениях/представлениях/компаниях?

+0

я решил проблему. Это не связано с HAML или Formtastic. Я передавал блок методу сохранения, и это вызвало проблему. См. Мой ответ для подробностей. –