Railsにてアプリを作っております。初心者です。

現在

  • Topモデル
  • Trouserモデル
  • Shoeモデル
  • Collectionモデル

があり、

  • @top
  • @trouser
  • @shoe

    はそれぞれCarrierWaveでアップロードされた、 :top_image, :trouser_image, :shoe_image のプロパティを持っています。

CollectionコントラローラーのnewのビューページではTop, Trouser, Shoeモデルからインスタンスを取得し、画像を一覧表示しています。

.d-block 
  = form_with model: @collection, url: collections_path , local: true do |f|
    .form-check
      - @tops.each do |top|
        = image_tag "#{top.top_image.url}"
        = label_tag :top_image
        =f.radio_button :top_image, top.top_image , checked: false
    .form-check
      - @trousers.each do |trouser|
        = image_tag "#{trouser.trouser_image.url}"
        =f.label :trouser_image
        =f.radio_button :trouser_image, trouser.trouser_image,  checked: false
    .form-check
      - @shoes.each do |shoe|
        = image_tag "#{shoe.shoe_image.url}"
        =f.label :shoe_image
        =f.radio_button :shoe_image, shoe.shoe_image, checked: false
    =f.submit '登録', class: 'btn btn-primary'

ここで、ラジオボタンでチェックされた:~~_imageをそれぞれ1枚ずつ、Collectionコントローラーで受け取り、ワンセットにしてCollectionに保存したいです。
しかし、params経由で受け取るところまでは良いのですが、受け取った後に@collectionに対してsaveメソッドを呼ぶと、@collectionがnillだとエラーが出ます。

debuggerを挟んで検証してみましたが、@collectionは値を保持しているのにも関わらず、saveメソッドを実行するとダメです(nilエラー)。

class CollectionsController < ApplicationController

...

 def new
  @collection = Collection.new
  @tops = Top.all
  @trousers = Trouser.all
  @shoes = Shoe.all
 end

  def create
    @collection = Collection.new(collection_params)

    # ここの行にて p @collection や debugger でparamsの値を確認すると、しっかり値を保持しています。
    # ですが、下記のように@collectionに対してsaveメソッドを呼び出すと、
    # undefined method `save' for nil:NilClassが出ます。
    # しかし、debuggerのコンソール内で@collection.saveを実行するとCOMMITしました。

    if @colletion.save
      flash.notice = 'コレクションを登録しました。'
      redirect_to collections_path
    else
      render 'new'
    end
  end

  private
    def collection_params
      {
        top_id: params[:collection][:top_image],
        trouser_id: params[:collection][:trouser_image],
        shoe_id: params[:collection][:shoe_image]
      }
   # StrongParameterを使った 
     # params(:collection).permit(:top_image, trouser_image, shoe_image)
     # でも動作しませんでした。
    end
end

ここ丸2日悩まされております...。
どなたか原因が分かる方はいらっしゃいますでしょうか?