Почему form_helper предполагает, что он должен вызывать active_record_helper? - PullRequest
1 голос
/ 20 июня 2009

Этот код, на мой взгляд, вызывает ошибку:

<% remote_form_for(mymodel) do |f| %>
  <%= f.error_messages %>

(mymodel не является объектом ActiveRecord)

Когда я смотрю на трассировку ошибок, я вижу этот раздел, который указывает, что error_messages в представлении переводится в error_messages_for в active_record_helper:

C:/Ruby18/lib/ruby/gems/1.8/gems/
actionpack-2.3.2/lib/action_view/
helpers/active_record_helper.rb:179:in `error_messages_for'

C:/Ruby18/lib/ruby/gems/1.8/gems/
actionpack-2.3.2/lib/action_view/
helpers/form_helper.rb:984:in `error_messages'

Почему form_helper считает, что он должен вызывать active_record_helper, хотя mymodel не является объектом ActiveRecord?

1 Ответ

3 голосов
/ 20 июня 2009

Реализация f.error_messages реализована в ActiveRecordHelper, поскольку она зависит от определенного формата ActiveRecord::Errors (который в ActiveRecord::Base подклассах хранится в mymodel.errors).

Если вы удалите сообщение об ошибке, оно должно работать. Кроме того, вы можете создать свой собственный класс, который имеет тот же интерфейс, что и ActiveRecord :: Errors, и просто заменить его в этом случае стилем утки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...