0

HTML HEAD やその他の場所で、次のようなコードを頻繁に書いていることに気付きます。

<% if @canonical_url %>
  <link rel="canonical" href="<%= @canonical_url %>"/>
<% end %>

次に、適切であればコントローラーに変数を設定します。

1行で同等のものを書く方法はありますか、またはコードを整理する別の方法はありますか?

4

4 に答える 4

2

重複した回答で申し訳ありません。URL を 1 つだけ掲載させていただきます。

または、このコンテンツをレイアウトに表示したいビューで content_for を使用することで、問題を解決できる場合があります。

于 2009-11-08T21:34:23.367 に答える
1

わかりました、私はこの解決策を思いつきました。テンプレートでは:

<%= 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
于 2009-11-08T21:03:33.330 に答える
1

あなたが何をしようとしているのかを判断するには、もう少しコンテキストが必要です。あなたが提供した情報を考慮して、Rails の canonical-url プラグインを確認することをお勧めします。

于 2009-11-08T21:31:04.843 に答える
0
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 %>
于 2009-11-08T21:33:40.673 に答える