我很难将Headfirst翻译成Rails书,这本书基于Rails 2进入我的机器上设置的Rails 4。 练习尝试从数据库中检索记录,然后在编辑后更新表。 我尝试了很多不同的方法,我目前的配置如下 - 这将显示编辑记录,但实际上不会更新记录! (真气!) 注意 - 我没有使用'strong_parameters'也没有使用'protected_attributes' - 我确实尝试了这个但是得到了堆栈深度和其他错误。 我的广告模型也是空的 - 我删除了我尝试使用受保护属性gem的att_accessible条目。
这是我的 - 广告控制器条目:
def update
@ad = Ad.find(params[:id])
@ad.update_attributes(update_params[:id])
redirect_to "/ads/#{@ad.id}"
end
private
def update_params
params.permit(:name, :description, :price, :seller_id, :email, :ad, :img_url)
end
end
编辑视图:
<h1>Editing <%= @ad.name %></h1>
<%= form_for(@ad,:url=>{:action=>'update'}) do |f| %>
<p><b>Name</b><br /><%= f.text_field :name %></p>
<p><b>Description</b><br /><%= f.text_area :description %></p>
<p><b>Price</b><br /><%= f.text_field :price %></p>
<p><b>Seller</b><br /><%= f.text_field :seller_id %></p>
<p><b>Email</b><br /><%= f.text_field :email %></p>
<p><b>Img Url</b><br /><%= f.text_field :img_url %></p>
<p><%= f.submit "update" %></p>
<% end %>
更新时记录条目:
Started PATCH "/ads/1/update" for 127.0.0.1 at 2013-08-13 22:35:51 +0100
Processing by AdsController#update as HTML
Parameters: {"utf8"=>"V", "authenticity_token"=>"O4cN72FXCCkfkL7M6bozodbB0Aqor
NctOOV5sfXdado=", "ad"=>{"name"=>"Typewriter", "description"=>"Old manual typewr
iter. Many years useful service. Works best with a bottle next to it.", "price"=
>"71.95", "seller_id"=>"54", "email"=>"dhammett@email.com1", "img_url"=>"http://
homepage.mac.com/david_griffiths/typewriter.png"}, "commit"=>"update", "id"=>"1"
}
←[1m←[35mAd Load (1.0ms)←[0m SELECT "ads".* FROM "ads" WHERE "ads"."id" = ? L
IMIT 1 [["id", "1"]]
Unpermitted parameters: utf8, _method, authenticity_token, ad, commit, id
←[1m←[36m (0.0ms)←[0m ←[1mbegin transaction←[0m
←[1m←[35m (0.0ms)←[0m commit transaction
Redirected to http://localhost:3000/ads/1
Completed 302 Found in 54ms (ActiveRecord: 1.0ms)