-1

我的 Rails 应用程序中有如下所示的 HTML 代码:

<td><%= MyObj.find_by_id(@my_obj.some_id).name %></td>

这显示得很好。但是,该字段some_id并不总是存在于数据库中,因此在这些情况下我想显示NA而不是MyObj's name。

所以这就是我在伪代码中的意思:

<td><%= IF @my_obj.some_id is NIL THEN "NA" ELSE MyObj.find_by_id(@my_obj.some_id).name %></td>

我怎样才能做到这一点?

4

3 回答 3

2

您可以使用以下代码段:

<td><%= @my_obj.some_id.present? ? MyObj.find(@my_obj.some_id).name : 'NA' %></td>

但是,如果您在这样的视图代码中查找记录,您将面临一些相当大的问题。您的控制器应该处理这种逻辑。

于 2013-05-03T03:53:12.853 回答
1

您不应该在视图代码中访问数据库,将其留给您的控制器。尝试在控制器中加载对象:

# use this code to your controller
@view_obj = MyObj.find_by_id(@my_obj.some_id)

然后,您可以使用该方法设置名称,如果对象是try,它将返回nil而不是提高通常的名称:NoMethodErrornil

<%= @view_obj.try(:name) || "NA" %>
于 2013-05-03T04:05:08.473 回答
-2

<%= !MyObj.find_by_id(@my_obj.some_id).name.blank? ? MyObj.find_by_id(@my_obj.some_id).name : "NA" %>

于 2013-05-03T05:16:34.927 回答