2011-01-13 75 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 
相关问题