次の私の多くのメーラーのテンプレートのいずれかです。html.erbファイル内の文字列にはnilのない暗黙の型変換しない
<% if @system_email.present? && @system_email.try(:content).present? %>
<%= @system_email.content.to_s.gsub(
"::vUserName::", @wanted_equipment.try(:name)).gsub(
"::iListingId::", @equipment.identifier).gsub(
"::vListingTitle::", @equipment.title).gsub(
"::vCategoryName::", @equipment.try(:category).try(:name)).gsub(
"::eListingType::", @equipment.listing_type).gsub(
"::SYSTEM_COMPANY_NAME::", @system_company_name).gsub(
"::SITE_LISTING_URL::", link_to(@system_site_url, equipment_details_url(@equipment.slug))).html_safe
%>
ApplicationMailer
def newequip_matches_wanted
@system_email = SystemEmail.find_by(title: 'Equipment matches WantedEquipment')
@subject = @system_email.try(:subject).to_s
@subject = "Equipment matches WantedEquipment" if @subject.blank?
@equipment = Equipment.last
end
このhtml.erbをレンダリングしようとしていますがテンプレートでは次のようなエラーが表示されます:
no implicit conversion of nil into String
Extracted source (around line #2):
<% if @system_email.present? && @system_email.try(:content).present? %>
<%= @system_email.content.to_s.gsub(..
email.contenコメントを考えて表示するだけです。
@system_email = SystemEmail.find_by(title: 'Equipment matches WantedEquipment')
=> #<SystemEmail id: 28, identifier: "MAIL-0000028", title: "Equipment matches WantedEquipment", subject: "Equipment matches WantedEquipment", content: "<p>Hello <strong>::vUserName::</strong>,</p>\r\n ...", footer: nil, status: 1, created_at: "2017-03-01 07:36:30", updated_at: "2017-03-01 07:40:07">
他のメーラーと同じテンプレートが動作します。しかし、それはここでエラーを投げている。誰かが私に何が間違っているか教えてもらえますか?
コンテンツが見つかりません –
その特定のsystem_emailにはコンテンツがあります。より多くのリソースで質問を編集します。 – user3576036
'@ wanted_equipment.try(:name).to_s'これは、gsubの2番目のパラメータごとに行います。 – Omkar