2017-09-14 13 views
0

私のフォームに問題があります。「メンバー」テーブルにエントリを作成したい、各メンバーが「年」に接続されていますが、選択に不一致が続いています今年の。アソシエーションのタイプミスマッチ、f.select rails

これは私のフォームです:

<div class="field"> 
<%= f.label :name %><br> 
<%= f.text_area :name %> 
</div> 
<div class="field"> 
<%= f.label :nickname %><br> 
<%= f.text_area :nickname %> 
</div> 
<div class="field"> 
<%= f.label :year %> 
<%= f.select :year, options_for_select(@years.all.map{|y| [y.year,y.id]}) %> 
</div> 
<div class="actions"> 
<%= f.submit %> 
</div> 

そしてここでは、モデルは以下のとおりです。

class Member < ApplicationRecord 
    belongs_to :year 
    mount_uploader :image, ImageUploader 
end 

class Year < ApplicationRecord 
    has_many :members, dependent: :destroy 
end 

私は、私は次のエラーを取得する提出しようとすると:期待

年(#70050157849460) 、Stringのインスタンスである "1"を取得(#9412380)

どこが間違っていましたか?

編集:ここでは

が、私はチェックしませんでしたが、最初にあなたがyear_id言う必要いきますコントローラ

class MembersController < ApplicationController 
    def home 
    @members = Member.all 
    end 
    def new 
    @member = Member.new 
    @years = Year.all 
    end 
    def create 
    @member = Member.new(member_params) 
    if @member.save 
     flash[:success] = "Member Created" 
     redirect_to root_path 
    else 
     render 'form' 
    end 
    end 

    private 

    def member_params 
    params.require(:member).permit(:name,:nick,:position,:image,:year) 
    end 

end 
+0

フルコントローラコードを表示してください。 –

答えて

0
<div class="field"> 
<%= f.label :name %><br> 
<%= f.text_area :name %> 
</div> 
<div class="field"> 
<%= f.label :nickname %><br> 
<%= f.text_area :nickname %> 
</div> 
<div class="field"> 
<%= f.label :year %> 
<%= f.select :year_id, options_for_select(@years.all.map{|y| [y.year,y.id]}) %> 
</div> 
<div class="actions"> 
<%= f.submit %> 
</div> 

または

<div class="field"> 
<%= f.label :name %><br> 
<%= f.text_area :name %> 
</div> 
<div class="field"> 
<%= f.label :nickname %><br> 
<%= f.text_area :nickname %> 
</div> 
<div class="field"> 
<%= f.label :year %> 
<%= f.select :year, options_for_select(@years.all.map{|y| [y.year,y]}) %> 
</div> 
<div class="actions"> 
<%= f.submit %> 
</div> 

この第二のコードですコレクションのマップを作成したときに、渡されるパラメータとしてIDを設定したので、 フォーム上では基本的にアクティブなレコードオブジェクトを期待するフォームを選択します。

関連する問題