0

Railsアプリでは、collection_selectを使用して、ユーザーに有効な選択肢のリストを提供しています。ルックアップされたテーブルのIDのみを保存しました。次に、 showビューでルックアップされたクラスを呼び出して、idの実際の値を取得します。

編集中:

= f.collection_select :language_id, Language.find(:all, :conditions => ["supported = 't'"]), :id, :language, include_blank: false, :prompt => "Language"

ショーで:

%p
  %b Language:
  = Language.find(@article.language_id).language_code

選択がない限り、これはすべて正常に機能しています。@ article.language_idフィールドがnullの場合、検索が失敗するため、ビューをロードできません。null値を無視し、フィールドを空白のままにする方法に関する提案はありますか?

4

2 に答える 2

1

find_by_idID が見つからない場合にエラーが発生しないため、使用はオプションです。

ただし、これはデータベースへの呼び出しを発行します。

だから私はlanguage_idをチェックしてデフォルトを提供します

= @article.language_id.nil? ? default : Language.find_by_id(@article.language_id)

これをモデルまたはヘルパーに移動して、ビュー コードを乱雑にしないようにすることもできます。

于 2013-01-09T12:40:41.680 に答える
0

これは一般的な問題です。単にtrynil値を残すために使用します:

 if @article.try(:language_id) != nil
      @code = Language.find(@article.language_id).language_code
    else
      //default nil
      @code = nil
  end
于 2013-01-09T12:49:20.070 に答える