优雅的方式只显示记录,如果它们存在于轨道ERB中

Jac*_*ham 3 ruby ruby-on-rails erb

我发现在显示用户信息时,我在ERB视图中使用了大量重复代码.沿着这条路线

<% if @user.name.present? %>
  <%= @user.name %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

我基本上是为了避免错误而对所有内容执行此操作(例如,可能没有所有新字段的旧用户).

有一个更好的方法吗?

Flo*_*rry 9

将逻辑移动到帮助器:

def name_for(user)
 user.name if user.name.present?
end
Run Code Online (Sandbox Code Playgroud)

并在您的视图中调用该帮助程序:

<%= name_for(@user) %>
Run Code Online (Sandbox Code Playgroud)