0

Rails 3 の使用。これはフロントエンドの設計に関する質問です。

ゴール:

Contact | Email | URL

show.html.erb:

<% if !@shop.contact.blank? %>
  <%= @shop.contact %>
<% end %>
<% if !@shop.email.blank? %>
  <%= @shop.email %>
<% end %>
<% if !@shop.url.blank? %>
  <%= link_to @shop.url, @shop.url, :target => "_blank" %>
<% end %>

|前と後の要素に値がある場合にのみ入れるにはどうすればよいですか? 現段階では、値が無ければ何も出力されません。

どうもありがとう。

4

1 に答える 1

1
<% url = link_to(@shop.url, @shop.url, :target => "_blank") if @shop.url.present? %>
<%= [@shop.contact, @shop.email, url].select(&:present?).join(" | ") %>

これにより、すべての要素の配列が作成され、値を持つ要素が選択されpresent?(の反対blank?)、残りの配列の各要素の間にパイプを配置して結合されます。

とはいえ、より複雑なロジックがある場合は、おそらくヘルパーメソッドを作成する必要があります。ERBテンプレートは、複雑なロジックには適していません。上記は許容範囲内です。

于 2012-06-10T12:37:43.533 に答える