HTML HEAD やその他の場所で、次のようなコードを頻繁に書いていることに気付きます。
<% if @canonical_url %>
<link rel="canonical" href="<%= @canonical_url %>"/>
<% end %>
次に、適切であればコントローラーに変数を設定します。
1行で同等のものを書く方法はありますか、またはコードを整理する別の方法はありますか?
HTML HEAD やその他の場所で、次のようなコードを頻繁に書いていることに気付きます。
<% if @canonical_url %>
<link rel="canonical" href="<%= @canonical_url %>"/>
<% end %>
次に、適切であればコントローラーに変数を設定します。
1行で同等のものを書く方法はありますか、またはコードを整理する別の方法はありますか?
重複した回答で申し訳ありません。URL を 1 つだけ掲載させていただきます。
または、このコンテンツをレイアウトに表示したいビューで content_for を使用することで、問題を解決できる場合があります。
わかりました、私はこの解決策を思いつきました。テンプレートでは:
<%= show_if('<link rel="canonical" href="$1"/>', @canonical_url) %>
そしてヘルパーメソッド:
#
# Return the template text if the variable has a value.
#
def show_if(template, variable)
if variable
template.gsub('$1', variable)
else
''
end
end
あなたが何をしようとしているのかを判断するには、もう少しコンテキストが必要です。あなたが提供した情報を考慮して、Rails の canonical-url プラグインを確認することをお勧めします。
def if_value(value, &block)
if value
concat(capture(value, &block))
end
end
<% if_value(@canonical_url) do |value| %>
<link rel="canonical" href="<%= value %>"/>
<% end %>