2012-01-22 6 views
0

I 2つのモデルプロセスcollection_select

最初のモデルcategory.rb

class Category 
    include Mongoid::Document 

# Relationships 
    has_many :boards, :dependent => :destroy , :autosave => true 
    accepts_nested_attributes_for :boards 

    #fields 
    field :name 

    #attr 
    attr_accessible :name, :boards_attributes 
end 

私が持っている第2のモデルそのboard.rb

class Board 
include Mongoid::Document 

#Relationships 
belongs_to :category 

    #fields 
    field :name 
    field :description 

    #attr 
    attr_accessible :name, :description 

end 

を有しますin 編集ボードビュー次のフォーム:

<%= form_for [@board], :url => user_board_path do |f| %> 
<%= f.text_field :name %> 
<%= f.text_area :description, :cols =>72, :rows => 5, %> 
<%= f.collection_select :category_id, Category.all, :id, :name%> 
<% end %> 

と私はboards_controller.rbから更新アクションの次に持っている:私がnilの@ board.category_idを取得するのはなぜ

def update 
    @board = Board.find(params[:id]) 
    @category = Category.find(params[:category_id]) 
    @board.category_id = @category 

respond_to do |format| 
    if @board.update_attributes(params[:board]) 
    format.html { redirect_to user_board_path(@board.user, @board), notice: 'Board was successfully updated.' } 
    format.json { head :ok } 
    else 
    format.html { render action: "edit" } 
    format.json { render json: @board.errors, status: :unprocessable_entity } 
    end 
end 
end 

?私は@ board.category_idをselectで選択した値で更新したい。

答えて

0

問題は@board.category_id = @category(オブジェクトをidフィールドに設定する)です。それは

@board = Board.find(params[:id]) 
@category = Category.find(params[:category_id]) 
@board.category = @category 

あるべきか@categoryはコントローラでもビューで使用されていない場合は、第二の溶液はカテゴリー

+0

おかげで「SELECT」の要求を削除し

@board = Board.find(params[:id]) @board.category_id = params[:category_id] 

書くことができます@Baldrick、私のために働いていない:(。警告:保護された属性を大量に割り当てることはできません:category_id' – hyperrjas

+0

それは問題が修正されました:D。**:category_id **をボードモデルに追加しました: 'attr_accessible:name、:pins_attributes、:description、:category_id'ありがとうございましたおお! – hyperrjas

関連する問題