2011-01-13 74 views
0

我是Rails(Rails 3)中的新成員。我在MyObject模型中有'color'屬性,此'color'屬性需要以下拉菜單樣式顯示。所以我用Rails的助手來實現這一點:我可以使用表單來更新我的對象的單個屬性

select("myobject", COLORS, { :include_blank => false })

但是,從DB MyObject的實例顯示在錶行,而不是形式。只有'color'屬性需要使用表單助手。我的觀點是,我希望我的'color'屬性顯示在下拉菜單中,如果我決定使用Rails窗體助手,我可以使用Rails窗體助手來獲取對象的單個屬性('顏色')並且在提交表單時,傳遞給控制器​​的整個對象(在表格行中)將被更新?如果是這樣,如何實現該視圖,如果沒有,實現的正確方法是什麼?

在側我的控制器,更新方法:

class MyobjectsController < ApplicationController 
... 
def update 

    @myobject = myobject.find(params[:id]) 

    if @myobject.update_attributes(params[:myobject]) 
     puts @myobject.color #always get default value 
     redirect_to myobject_path 
    else 
     redirect_to myobject_path 
    end 
    end 
... 
end 

回答

0

您可以更新單個屬性。你可能在尋找這樣一種形式:

 
form_for @myobject do |f| 
    f.select :color, COLORS 
end 

您還可以簡化您的控制器代碼:

 
def update 
    @myobject = myobject.find(params[:id]) 

    if @myobject.update_attributes(params[:myobject]) 
    puts @myobject.color #always get default value 
    end 
    redirect_to myobject_path 
end 
相關問題