Написание правильных ошибок проверки?

#ruby-on-rails #validation #forms #polymorphic-associations

#ruby-on-rails #проверка #формы #полиморфные ассоциации

Вопрос:

Обновление: Уничтожен весь вопрос с более подробным описанием

Ок, тот же вопрос с разными именами.

В моей модели я действительно проверяю наличие.

 class QuickFact < ActiveRecord::Base
 belongs_to :organization

 validates_presence_of :quick_fact, :content
  

Но если либо из них пустое, оно выдает ошибку с :

 Missing template organizations/_quick_fact_fields.erb
  

Вот в чем загвоздка. У меня есть модель вложенной формы с динамически добавляемыми к ней частями. Как следует отсюда :

http://railscasts.com/episodes/197-nested-model-form-part-2

Это то, что генерирует и вызывает _quick_fact_fields.erb . Но это работает отлично и находится внутри quick_facts/_quick_fact_fields.html.haml

Обновление: мой код контроллера

organizations_controller.rb

 def update
  if @organization.update_attributes(params[:organization])
    ..
    elsif params[:organization][:quick_facts_attributes]
      flash[:notice] = 'QuickFacts successfully updated.'
      redirect_to organization_quick_facts_url(@organization)
    else
      flash[:notice] = 'Organization was successfully updated.'
      redirect_to :action => 'edit'
    end
  else
    # re-render last form
    ..
    elsif params[:organization][:quick_facts_attributes]
      render :template => "quick_facts/index"
    else
      render :action => 'edit'
    end
  end
end
  

Ответ №1:

Похоже, что вы пытаетесь отобразить my_custom_field частичное изображение из одного из рабочих представлений, найденных в app/views/worker , но, по-видимому, там такого частичного изображения нет. Если вы покажете нам код соответствующих представлений и контроллеров, будет легче точно определить проблему.

Кстати, вы могли бы просто сделать validates_presence_of :name вместо определения пользовательского метода проверки для упрощения вашей модели. Однако это, скорее всего, не связано с ошибкой, которую вы описываете, и является всего лишь общим предложением по улучшению.

Комментарии:

1. Что ж, тот же принцип применяется после ваших правок: вы пытаетесь отобразить quick_fact_fields частичное где-нибудь из действия в вашем OrganizationsController , поэтому Rails ищет ваше частичное в app/views/organizations , а не app/views/quick_facts . Проблема заключается в вашем представлении и / или коде контроллера; если вы опубликуете этот код, будет намного проще дать более подробный ответ.

Ответ №2:

Понял. У меня было два контроллера.

quick_facts_controller.rb и organizations_controller.rb

Как только я удалил функцию обновления в quick_facts_controller, она заработала должным образом.