我正在尝试检查用户提供的链接是否是 img。如果是的话我想将它放在一个 img 标签中。这是我第一次使用 Ruby on Rails,或者说一般的 Ruby。
<% if link.url.include? ".jpg" %>
<div class="img_wrapper"><img src="<%= link.url %>"></img></div>
<% elsif link.url.include? ".png" %>
<div class="img_wrapper"><img src="<%= link.url %>"></img></div>
<% elsif link.url.include? ".gif" %>
<div class="img_wrapper"><img src="<%= link.url %>"></img></div>
<% else %>
<div class="img_wrapper"><img src="../assets/no_image.png"></img></div>
<% end %>
最佳答案
我认为这样的逻辑属于模型,因为这使得测试和重用变得更容易:
# in app/models/link.rb
def image?
%w( .gif .jpg .png ).include?(File.extname(url))
end
# in the view
<% if link.image? %>
<div class="img_wrapper"><img src="<%= link.url %>"></img></div>
<% else %>
<div class="img_wrapper"><img src="../assets/no_image.png"></img></div>
<% end %>
或更短(您可能想要扩展文件扩展名列表(例如 bmp
、jpeg
或 tiff
)):
# in app/models/link.rb
def image_url
%w( .gif .jpg .png ).include?(File.extname(url)) ? url : 'no_image.png'
end
# in the view
<div class="img_wrapper"><%= image_tag(link.image_url) %></div>
image_tag
版本将使用 asset pipeline .
关于ruby-on-rails - 此 IF 循环的最佳实践应被视为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36378731/