0

私の意見ではかなり標準的な更新ですが、put リクエストを送信しても属性は更新されません。これが私の関連モデルです:

class Vendor < ActiveRecord::Base

    geocoded_by :address
    after_validation :geocode,
        :if => lambda{ |obj| obj.address_changed? }
end

私のコントローラーメソッド:

def edit
    @vendor = Vendor.find(params[:id])
end

def update
    @vendor = Vendor.find(params[:id])
    if @vendor.update_attributes(vendor_params)
        redirect_to vendors_mgmt_path

    else
        render 'edit'
    end
end

def vendor_params
    params.permit(:id, :name, :address, :image, :latitude, :longituded )
end

更新しようとした後、サーバー ログに次のように表示されます。

Started PUT "/vendors/1" for 127.0.0.1 at 2013-10-20 20:44:54 -0700
Processing by VendorsController#update as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"fTbZVEfckQz4xQzY5xSMQCArrGZqymNsVeyic/PXKcE=", "vendor"=>{"name"=>"Store", "address"=>"1221 E. Main St."}, "commit"=>"Save changes", "id"=>"1"}
  User Load (0.3ms)  SELECT "users".* FROM "users" WHERE "users"."id" = 1 LIMIT 1
  Vendor Load (0.2ms)  SELECT "vendors".* FROM "vendors" WHERE "vendors"."id" = ? LIMIT 1  [["id", "1"]]
Unpermitted parameters: utf8, _method, authenticity_token, vendor, commit
   (0.1ms)  begin transaction
   (0.1ms)  commit transaction
Redirected to http://localhost:3000/vendors/mgmt
Completed 302 Found in 10ms (ActiveRecord: 0.6ms)

ベンダーフォームはそのように見え、認証トークンなどがないため、これは私を混乱させます.

<h1>Update <%= "#{@vendor.name}" %></h1>

<%= form_for(@vendor) do |f| %>
    <%= f.label :name %>
    <%= f.text_field :name %>

    <%= f.label :address %>
    <%= f.text_field :address %>

    <%= f.label :Logo %>
    <%= f.file_field :image %>

    <%= f.submit "Save changes", class: "btn btn-success" %>
<% end %>

明らかなエラーが表示される人はいますか? どんな助けでも大歓迎です。前もって感謝します!

4

1 に答える 1