2012-01-22 14 views
0

我有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 

第二種模式的board.rb

class Board 
include Mongoid::Document 

#Relationships 
belongs_to :category 

    #fields 
    field :name 
    field :description 

    #attr 
    attr_accessible :name, :description 

end 

我有在編輯板查看下一個表格:

<%= 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下一個:

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零?我想更新@ board.category_id與我選擇的值

回答

0

問題是@board.category_id = @category(您將對象設置爲ID字段)。它應該是

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

,或者如果@category沒有控制器,也沒有在視圖中使用,你可以寫

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

第二個解決方案消除了對類別

+0

謝謝「選擇」請求@Baldrick,不適用於我:(。我在日誌中獲得警告:不能批量分配受保護的屬性:category_id'。 – hyperrjas

+0

Tha問題已修復:D。我已將**:category_id **添加到Board Model :'attr_accessible:name,:pins_attributes,:description,:category_id'謝謝y ou非常! – hyperrjas