#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, она заработала должным образом.