4

コマンドを使用してアイテムを削除できないようですが、このチュートリアルと関連するgit repoaccepts_nested_attributes_forに従ってこれを行いました。私のモデルは...

class Job < ActiveRecord::Base
    has_many :specialties, :inverse_of => :job
    accepts_nested_attributes_for :specialties, allow_destroy: true, :reject_if => :all_blank
end

class Specialty < ActiveRecord::Base
    belongs_to :job, :inverse_of => :specialties
end

私のJob形では、私は...

<%= f.check_box :_destroy %>
<%= f.label :_destroy, "Remove Specialty" %>

チェックボックスをクリックしていくつかの を削除してもspecialties、何も起こりません。サーバーの出力を確認したところ、次のものが表示されました。

2013-07-16 16:15:16 -0400 に 127.0.0.1 の PATCH "/jobs/1" を開始しました

JobsControllerによる処理#HTMLとして更新

パラメータ: {"utf8"=>"✓", "authenticity_token"=>"8VxYXujcKXpLEm8+7B43SLU6X3fH00kIOmFK+nvaBKs=", "job"=>{"name"=>"Cook", "description"=>" food.", "specialties_attributes"=>{"2"=>{"名前"=>"", "説明"=>"", "_destroy"=>"1", "id"=>"3"} , "3"=>{"name"=>"", "description"=>"", "_destroy"=>"1", "id"=>"4"}}}, "commit"=>"ジョブの更新", "id"="="1"}

ジョブ負荷 (0.1ms) SELECT "jobs".* FROM "jobs" WHERE "jobs"."id" = ? LIMIT 1 [["id", "1"]]

許可されていないパラメーター: _destroy

許可されていないパラメーター: _destroy

許可されていないパラメーター: _destroy

許可されていないパラメーター: _destroy

私は何を取りこぼしたか?チュートリアルとリポジトリを何度も実行しましたが、どこに行ったのかわかりません。

4

2 に答える 2

15

これはstrong_parameters によるものです。あなたは今、permit鍵を握る必要があります。あなたの行動で:

params.permit(:_destroy)

于 2013-07-16T23:20:16.717 に答える
12

@Damien Rocheの答えが好きですが、それは誰にも混乱しないためです。これに従ってください

In job_controller.rb

private
 def job_params 
   params.require(:job).permit(:id, :description, :specialty_fields_attributes => [:id, :job_id, :avatar, :_destroy])
 end
于 2014-01-10T06:25:36.430 に答える