-1

私の Rails アプリケーションには、次のような HTML コードがあります。

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

そして、これはうまく表示されます。ただし、フィールドは常にデータベースに存在するとは限らないため、その場合は の名前ではなくsome_id表示したいと考えています。NAMyObj

疑似コードでの意味は次のとおりです。

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

これどうやってするの?

4

3 に答える 3

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 に答える