私は次のものを持っています(VenueはActorのCTIの子孫です):
class Actor < ActiveRecord::Base
has_one :profile, validate: true, autosave: true
end
class Venue < ActiveRecord::Base
...
%w{description address website phone}.each do |attr|
delegate attr.to_sym, "#{attr}=".to_sym, to: :profile!
end
def profile!
actor.profile || actor.build_profile
end
...
end
これらのデリゲート属性のフィールドを直接会場フォームに含めています。これらの属性の1つが検証に失敗した場合、表示されるのは一番上の通知だけですが、フィールドのラッパーは表示されません。:"actor.profile.website"
これは、Venueインスタンスのエラーハッシュのキーが属性名と完全に一致せず、単に。ではなくに設定されているためだと思います:website
。
これらのエラーを正しく表示する方法はありますか?
編集
フォームは次のとおりです。
<%= simple_form_for @venue do |f| %>
<%= f.error_notification %>
<%= f.input :name %>
<%= f.input :address, required: true %>
<%= f.input :phone %>
<%= f.input :website %>
<%= f.input :members, collection: [], class: "form_tag" %>
<%= f.input :tag_list, as: :string, class: "form_tag", hint: t("misc.hint.tag"),
input_html: { "data-pre" => @venue.tag_list.map {|t| { id: t, name: t }}.to_json } %>
<%= f.input :description, as: :text, input_html: {rows: 6, cols: 53, class: "form_tag"} %>
<div class="actions center">
<%= f.submit class: "btn btn-success" %>