良い一日をお過ごしください。それで、私にはこの奇妙な虫がいて、私のお尻を蹴っているのですが、神の愛のためにそれがどこにあるのかわかりません。
通常、ビュー内でレンダリングされる ViewComponent、つまり *.html.erb があります。例えば、
<%= render Contact::Avatar.new(
contact:,
size: :xl,
) %>
すべて問題なく、コンポーネントは問題なく正常にレンダリングされます。問題は、コンポーネントにエラーがある場合に発生します。コンポーネントをレンダリング関数に渡すときにコンポーネント内で発生したエラーはすべて飲み込まれ、本来のエラーが発生する代わりに、エラーが飲み込まれて空の文字列が返されるため、問題が発生します。何が間違っているのかを知ることから。たとえば、コンポーネント ビューが contact/avatar_component.html.erb 内で未定義の変数を参照している場合、テストのために ArgumentError を発生させます。
<% raise ArgumentError %>
<% if u/contact.draft? %>
<%= render AvatarComponent.new @contact, color: Color.indigo, **@options %>
<% else %>
<% if @contact.name.strip.blank? || @contact.discarded? %>
<%= render AvatarComponent.new @contact, **@options %>
<% else %>
<%= render AvatarComponent.new @contact, text: @contact.abbreviated_name, **@options %>
<% end %>
<% end %>
そして、エラーはレンダリング関数によってキャプチャされます。
ただし、Ruby ファイルでエラーが発生した場合、つまり
class Contact::Avatar < ViewComponent::Base
def initialize(contact:, **options)
@contact = contact
@options = options
raise ArgumentError
end
end
エラーがキャプチャされて表示される
再現できませんでした。
一部のライブラリは以下のものをオーバーライドする可能性があります。
https://translate.google.com/translate?hl=ja&sl=en&tl=ja&u=https://github.com/ViewComponent/view_component/issues/1981