在HAML模板中使用Formtastic更新记录时出错

时间:2010-03-02 12:13:03

标签: ruby-on-rails ruby formtastic

我在HAML表单中使用formatastic

- 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。用于在再培训局工作的表格。

如何解决此问题?

修改

我解决了这个问题。它与HAML或Formtastic无关。我正在将一个块传递给save方法,这导致了问题。有关详细信息,请参阅下面的答案。

3 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

我找到了这个错误的原因。我在另一个使用OAuth插件的项目中重用了控制器中的一些代码。 OAuth插件要求您将块传递给ActiveRecord save方法。 vanilla 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

答案 2 :(得分:0)

Rails正在app / views / companies /中寻找一个名为update.something.erb的视图文件(可能是update.html.erb)。我的猜测是你有一个update.html.haml文件,所以这就是你收到错误的原因。

无论哪种方式,这与Formtastic无关。

您在app / views / companies中列出了哪些文件?