重构Ruby

Kot*_*233 3 ruby arrays refactoring ruby-on-rails

我有三个数组,其中两个来自JSON.

我需要检查每个数组是否为nil且计数大于0.如果任何大于0,则显示"Hello World",否则显示"Boo".

<% if !@arrayOne.nil? && @arrayOne.count > 0 || !@user_json[:user_stuff].nil? && @user_json[:user_stuff].count > 0 || !@user_json[:more_user_stuff].nil? && @user_json[:more_user_stuff].count > 0 %>
<h1>Hello World</h1>
  <% else %>
<h1>Boo</h1>
<% end %>
Run Code Online (Sandbox Code Playgroud)

我需要一些帮助重构此代码,并希望了解其他方法来解决这个问题.

Leo*_*ito 5

您可以使用array.blank?(假设您当然使用Rails)来检查数组是否为空或者为空,例如:

<% if !@arrayOne.blank? || !@user_json[:user_stuff].blank? || !@user_json[:more_user_stuff].blank? %>
Run Code Online (Sandbox Code Playgroud)

经验法则,您应尽可能多地将逻辑移动到控制器.


正如评论中所建议的那样,您也可以使用present?!blank?提高可读性相同的内容:

<% if @arrayOne.present? || @user_json[:user_stuff].present? || @user_json[:more_user_stuff].present? %> 
Run Code Online (Sandbox Code Playgroud)

  • `!foo.blank?`可以写成`foo.present?`.什么读取很好的恕我直言. (2认同)