0

これは、フォームの選択タグです。

<%= f.select(:example_name, ModelName.all.collect {|p| [ p.example_name, p.example_name ] }, {:include_blank => 'Select Example'}) %>

これは、モデル ModelName のすべての example_name を返します。しかし、モデルには空の値がデータベースに保存されています。

したがって、選択タグで有効なエントリのみを取得し、空または nil の値を残す必要があります。

どうやってやるの?

前もって感謝します

4

2 に答える 2

1

試す

<%= f.select(:example_name, ModelName.where("example_name IS NOT NULL && example_name != ''").collect {|p| [ p.example_name, p.example_name ] }, {:include_blank => 'Select Example'}) %>
于 2013-01-11T06:28:45.677 に答える
1

からクエリを変更できます

ModelName.all

ModelName.where("example_name <> ''")

これにより、 との両方 NULLの値が省略され""ます。

ビューにクエリを直接配置することはお勧めできません。通常は必要ありません。そのクエリは、コントローラー アクションの割り当てで使用する必要があります。

@select_options = ModelName.where(...

そしてあなたの見解では

<%= f.select(:example_name, @select_options.collect { [...

あなたも間違いなく行動に移すべきcollectです。

于 2013-01-11T06:28:56.137 に答える