Ruby on Rails应用程序,我有一个带有超链接的“Bootstrap”图像行。我只想展示其中包含内容的那些。
以下是一个例子:
<div class="span3">
<h5 class="pagination-centered">
<%= link_to (image_tag "/img/folder.jpg", alt: "Buyer's Guides", width: "75px"), action: "index", filter: @filter, type: "buyers_guides" %>
<%= link_to "Buyer's Guides", action: "index", filter: @filter, type: "buyers_guides" %>
</h5>
</div>
<div class="span3">
<h5 class="pagination-centered">
<%= link_to (image_tag "/img/folder.jpg", alt: "Datasheets", width: "75px"), action: "index", filter: @filter, type: "datasheets" %>
<%= link_to "Datasheets", action: "index", filter: @filter, type: "datasheets" %>
</h5>
</div>
使用if else语句会好吗?如果,elsif?
或者控制器怎么样?
class Users::MarketingController < ApplicationController
def index
@filter = params[:filter]
@type = params[:type]
if @filter
if @type
arrays_of_strings_to_check_against = ['logos', 'datasheets', 'buyers_guides', 'videos', 'web_banners', 'presentations', 'documents', 'press_releases' ]
if arrays_of_strings_to_check_against.any?{ |o| @type =~ /\b#{Regexp.escape(o)}\b/ }
base_dir = "public/files/marketing"
@files = Dir.glob("#{base_dir}/voip/#{@filter}/#{@type.downcase}/*.[a-z]*")
@view = "files"
else
@view = 'types'
end
else
@view = 'types'
end
else
@view = "category"
end
end
端
新手并努力学习良好做法。 谢谢
答案 0 :(得分:3)
是的,if
/ else
通常在这种情况下使用,但绝对是丑陋的。您也可以使用condition ? do_if_true : do_if_false
表示法,这很方便。
<% if has_content_condition %>
<div class="span3">
<h5 class="pagination-centered">
<%= link_to (image_tag "/img/folder.jpg", alt: "Buyer's Guides", width: "75px"), action: "index", filter: @filter, type: "buyers_guides" %>
<%= link_to "Buyer's Guides", action: "index", filter: @filter, type: "buyers_guides" %>
</h5>
</div>
<div class="span3">
<h5 class="pagination-centered">
<%= link_to (image_tag "/img/folder.jpg", alt: "Datasheets", width: "75px"), action: "index", filter: @filter, type: "datasheets" %>
<%= link_to "Datasheets", action: "index", filter: @filter, type: "datasheets" %>
</h5>
</div>
<% end %>
我不确定这是不是你的想法。如果不清楚,评论,我会很乐意提供帮助。 =)
答案 1 :(得分:0)
如果我理解正确,你也可以这样做:
if x.present?
x
end
所以例如
@image = image.find(params[:id])
if @image.present?
<div class="span3">
<h5 class="pagination-centered">
<%= link_to (image_tag "/img/folder.jpg", alt: "Buyer's Guides", width: "75px"), action: "index", filter: @filter, type: "buyers_guides" %>
<%= link_to "Buyer's Guides", action: "index", filter: @filter, type: "buyers_guides" %>
</h5>
</div>
end