用铁轨上的红宝石更新模型

时间:2014-04-17 01:00:54

标签: ruby-on-rails

我使用post方法获取参数值

Parameters: {"utf8"=>"✓", "authenticity_token"=>"88f1KdoixHkPXIQJs4Vmg0kj9Sxrc+eM0DGSbD0B1xs=", "adverts"=>{"title"=>"fdasfa", "features"=>"", "description"=>"", "areadescription"=>"", "rooms"=>"", "bathroom"=>"", "price"=>"", "type"=>"", "source"=>"", "originaldate"=>""}, "commit"=>"Save Adverts"}

获得具体值:

@advert = params[:adverts]

advert与名为advertTable的表的字段具有完全相同的名称。 我如何解析广告变量到我的模型广告的同一时间?

1 个答案:

答案 0 :(得分:0)

也许你应该在教程中获取战利品。
为了将变量传递给对象,您必须告诉它是什么对象...然后将参数传递给对象。所以,

@advert=Advert.new(params[:adverts])
@advert.save

然而,这不是一个好习惯......对于更新和创建,您应该使用强参数。这样,坏人就不会更新id列或其他不公开的列。

最好的方法:

@advert=Advert.new(advert_params)
@advert.save

在更新操作中:

@advert=Advert.find(params[:id]) #this comes from the url
@advert.update(advert_params)

在相同的控制器中,在“私人”部分下面降低:

private
def advert_params
    params.require(:adverts).permit(:title, :features, :description, :areadescription, :rooms, :bathroom, :price, :type, :source, :originaldate)
end