ruby-on-rails - 此 IF 循环的最佳实践应被视为什么?

标签 ruby-on-rails ruby

我正在尝试检查用户提供的链接是否是 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 %>

或更短(您可能想要扩展文件扩展名列表(例如 bmpjpegtiff)):

# 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/

相关文章:

ruby-on-rails - Strip 在 rails 中无法正常工作

ruby-on-rails - 我的 Rails 项目中的哪些文件不能安全地提交到公共(public)存储库?

javascript - `Node.js` 和/或其他 Javascript 分支相对于非 JS 框架(Rails、Django...)的性能、稳定性和速度

ruby-on-rails - 如何在 localhost 中使用 rails plus paperclip 和 fog

ruby-on-rails - rails : how to make class method scope to handle nil arguments

ruby - 为什么 concat 和 << 在分配时不更改字符串变量

ruby-on-rails - 在 Ruby on Rails 4(欧盟立法)中强制禁用 cookie,直到用户(重新)接受 ToS

ruby-on-rails - 从表中删除与数组中的数据匹配的记录?

ruby-on-rails - RVM:如何动态导出路径中的gem可执行目录?

Ruby gsub 在 IP 地址上重复