他のSO回答を読んだ後、いくつかの共通のテーマがあることは明らかです。Rails未定義のメソッド `map 'for nil:NilClass on collection_select - 呼び出される参照はnilである可能性があります
ほとんどの場合、このタイプのエラーは、呼び出されたオブジェクトがまだ定義されていない場合に発生しますが、この場合は選択を構築するときに参照されないエントリがある可能性があります。has_many
Class Tag
property :name, type: String
has_many :in, :tagged, type: :CONCEPTUAL_TAG, model_class: :Artefact
end
1つのオプションは、このような何かを行うことです。
<div class="field">
<%= f.label :tagged_id %><br>
<% if [email protected]? %>
<%= f.collection_select(:tagged, Artefact.all.sort { |a,b| a.name <=> b.name }, :id, :name, options = {:prompt => "Please Select an Item", :selected => @tag.tagged.map(&:id)}, html_options = {:multiple => true, :class=>"search"}) %>
<% else %>
<%= f.collection_select(:tagged, Artefact.all.sort { |a,b| a.name <=> b.name }, :id, :name, options = {:prompt => "Please Select an Item"}, html_options = {:multiple => true, :class=>"search"}) %>
<% end %>
</div>
をしかし、これは間違いなくDRYではありません。
アソシエーションがない場合は何も選択しない方法はありますか?f.collection_select
を1つにしているときにあらかじめ入力してください。
あなたの質問は、あなたが考えているようだとして明確かつ簡単ではありません。あなたがしようとしているものでそれを更新してみてください。また、あなたがテキスト本体の中でそれをするときにどんなエラーがありますか? – amingilani
メタレベルでは、私はhas_many関係でドロップダウン選択を提供したいときにいつでも使用できる解決策に出ようとしています。 – joshfindit