首页 \ 问答 \ 未经许可的参数载波(Unpermitted Parameter carrierwave)

未经许可的参数载波(Unpermitted Parameter carrierwave)

我正在尝试使用carrierwave gem在嵌套表单中上传文档。 当我提交表单时,我可以看到有一个未经许可的参数。

    Started POST "/debts" for ::1 at 2016-05-18 11:10:27 +1000
Started POST "/debts" for ::1 at 2016-05-18 11:10:27 +1000
Processing by DebtsController#create as HTML
Processing by DebtsController#create as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"fEmDQnog42ug97IllLL5A6g7oNueLaXIYwKpOEEqBwwjRdVkncNoPbeZuHsuD/HWz1PWGnD7m6lUyZmRJCKS9A==", "debt"=>{"amount"=>"", "details"=>"", "debtor_attributes"=>{"business_name"=>"", "abn"=>"", "first_name"=>"", "mobile_number"=>"", "last_name"=>"", "phone_number"=>"", "email"=>""}, "creditor_attributes"=>{"business_name"=>"", "abn"=>"", "first_name"=>"", "mobile_number"=>"", "last_name"=>"", "phone_number"=>"", "email"=>""}, "document"=>{"document"=>#<ActionDispatch::Http::UploadedFile:0x007f8fbbee2698 @tempfile=#<Tempfile:/var/folders/sn/t0vd19_x6mg1fkn8b4x1v8lm0000gn/T/RackMultipart20160518-27972-zmqd57.jpg>, @original_filename="pexels-photo (2).jpg", @content_type="image/jpeg", @headers="Content-Disposition: form-data; name=\"debt[document][document]\"; filename=\"pexels-photo (2).jpg\"\r\nContent-Type: image/jpeg\r\n">}}, "commit"=>"Create Debt"}
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"fEmDQnog42ug97IllLL5A6g7oNueLaXIYwKpOEEqBwwjRdVkncNoPbeZuHsuD/HWz1PWGnD7m6lUyZmRJCKS9A==", "debt"=>{"amount"=>"", "details"=>"", "debtor_attributes"=>{"business_name"=>"", "abn"=>"", "first_name"=>"", "mobile_number"=>"", "last_name"=>"", "phone_number"=>"", "email"=>""}, "creditor_attributes"=>{"business_name"=>"", "abn"=>"", "first_name"=>"", "mobile_number"=>"", "last_name"=>"", "phone_number"=>"", "email"=>""}, "document"=>{"document"=>#<ActionDispatch::Http::UploadedFile:0x007f8fbbee2698 @tempfile=#<Tempfile:/var/folders/sn/t0vd19_x6mg1fkn8b4x1v8lm0000gn/T/RackMultipart20160518-27972-zmqd57.jpg>, @original_filename="pexels-photo (2).jpg", @content_type="image/jpeg", @headers="Content-Disposition: form-data; name=\"debt[document][document]\"; filename=\"pexels-photo (2).jpg\"\r\nContent-Type: image/jpeg\r\n">}}, "commit"=>"Create Debt"}
  User Load (0.2ms)  SELECT  "users".* FROM "users" WHERE "users"."id" = $1  ORDER BY "users"."id" ASC LIMIT 1  [["id", 1]]
  User Load (0.2ms)  SELECT  "users".* FROM "users" WHERE "users"."id" = $1  ORDER BY "users"."id" ASC LIMIT 1  [["id", 1]]
Unpermitted parameter: document
Unpermitted parameter: document
  Role Load (0.1ms)  SELECT "roles".* FROM "roles" INNER JOIN "users_roles" ON "roles"."id" = "users_roles"."role_id" WHERE "users_roles"."user_id" = $1 AND (((roles.name = 'admin?') AND (roles.resource_type IS NULL) AND (roles.resource_id IS NULL)))  [["user_id", 1]]
  Role Load (0.1ms)  SELECT "roles".* FROM "roles" INNER JOIN "users_roles" ON "roles"."id" = "users_roles"."role_id" WHERE "users_roles"."user_id" = $1 AND (((roles.name = 'admin?') AND (roles.resource_type IS NULL) AND (roles.resource_id IS NULL)))  [["user_id", 1]]
Unpermitted parameter: document
Unpermitted parameter: document
Unpermitted parameter: document
Unpermitted parameter: document
Unpermitted parameter: document
Unpermitted parameter: document
   (0.1ms)  BEGIN
   (0.1ms)  BEGIN
  SQL (0.3ms)  INSERT INTO "creditors" ("business_name", "first_name", "last_name", "email", "mobile_number", "phone_number", "user_id", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9) RETURNING "id"  [["business_name", ""], ["first_name", ""], ["last_name", ""], ["email", ""], ["mobile_number", ""], ["phone_number", ""], ["user_id", 1], ["created_at", "2016-05-18 01:10:27.139053"], ["updated_at", "2016-05-18 01:10:27.139053"]]
  SQL (0.3ms)  INSERT INTO "creditors" ("business_name", "first_name", "last_name", "email", "mobile_number", "phone_number", "user_id", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9) RETURNING "id"  [["business_name", ""], ["first_name", ""], ["last_name", ""], ["email", ""], ["mobile_number", ""], ["phone_number", ""], ["user_id", 1], ["created_at", "2016-05-18 01:10:27.139053"], ["updated_at", "2016-05-18 01:10:27.139053"]]
  SQL (0.2ms)  INSERT INTO "debtors" ("business_name", "first_name", "last_name", "email", "mobile_number", "phone_number", "user_id", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9) RETURNING "id"  [["business_name", ""], ["first_name", ""], ["last_name", ""], ["email", ""], ["mobile_number", ""], ["phone_number", ""], ["user_id", 1], ["created_at", "2016-05-18 01:10:27.140363"], ["updated_at", "2016-05-18 01:10:27.140363"]]
  SQL (0.2ms)  INSERT INTO "debtors" ("business_name", "first_name", "last_name", "email", "mobile_number", "phone_number", "user_id", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9) RETURNING "id"  [["business_name", ""], ["first_name", ""], ["last_name", ""], ["email", ""], ["mobile_number", ""], ["phone_number", ""], ["user_id", 1], ["created_at", "2016-05-18 01:10:27.140363"], ["updated_at", "2016-05-18 01:10:27.140363"]]
  SQL (0.3ms)  INSERT INTO "debts" ("details", "user_id", "status", "creditor_id", "debtor_id", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5, $6, $7) RETURNING "id"  [["details", ""], ["user_id", 1], ["status", "Pre Collection"], ["creditor_id", 28], ["debtor_id", 28], ["created_at", "2016-05-18 01:10:27.141270"], ["updated_at", "2016-05-18 01:10:27.141270"]]
  SQL (0.3ms)  INSERT INTO "debts" ("details", "user_id", "status", "creditor_id", "debtor_id", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5, $6, $7) RETURNING "id"  [["details", ""], ["user_id", 1], ["status", "Pre Collection"], ["creditor_id", 28], ["debtor_id", 28], ["created_at", "2016-05-18 01:10:27.141270"], ["updated_at", "2016-05-18 01:10:27.141270"]]
   (2.0ms)  COMMIT
   (2.0ms)  COMMIT
Redirected to http://localhost:3000/debts/28
Redirected to http://localhost:3000/debts/28
Completed 302 Found in 20ms (ActiveRecord: 3.1ms)
Completed 302 Found in 20ms (ActiveRecord: 3.1ms)

我允许控制器中的参数

    def debt_params
  params.require(:debt).permit(:user_id, :amount, :commission, :invoice_issued, :invoice_date, :status, :details,
  document_attributes: [:id, :debt_id, :document],
  debtor_attributes: [:id, :user_id, :business_name, :abn, :first_name, :last_name, :email, :mobile_number, :phone_number],
  creditor_attributes: [:id, :user_id, :business_name, :abn, :first_name, :last_name, :email, :mobile_number, :phone_number])
end

该模型接受嵌套属性

class Debt < ActiveRecord::Base
 belongs_to :user
 belongs_to :creditor
 belongs_to :debtor
 has_many :documents

 accepts_nested_attributes_for :debtor
 accepts_nested_attributes_for :creditor
 accepts_nested_attributes_for :documents
end

不确定我在这里缺少什么?


I'm trying to upload a document within a nested form using the carrierwave gem. When I submit the form, I can see that there is an unpermitted parameter.

    Started POST "/debts" for ::1 at 2016-05-18 11:10:27 +1000
Started POST "/debts" for ::1 at 2016-05-18 11:10:27 +1000
Processing by DebtsController#create as HTML
Processing by DebtsController#create as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"fEmDQnog42ug97IllLL5A6g7oNueLaXIYwKpOEEqBwwjRdVkncNoPbeZuHsuD/HWz1PWGnD7m6lUyZmRJCKS9A==", "debt"=>{"amount"=>"", "details"=>"", "debtor_attributes"=>{"business_name"=>"", "abn"=>"", "first_name"=>"", "mobile_number"=>"", "last_name"=>"", "phone_number"=>"", "email"=>""}, "creditor_attributes"=>{"business_name"=>"", "abn"=>"", "first_name"=>"", "mobile_number"=>"", "last_name"=>"", "phone_number"=>"", "email"=>""}, "document"=>{"document"=>#<ActionDispatch::Http::UploadedFile:0x007f8fbbee2698 @tempfile=#<Tempfile:/var/folders/sn/t0vd19_x6mg1fkn8b4x1v8lm0000gn/T/RackMultipart20160518-27972-zmqd57.jpg>, @original_filename="pexels-photo (2).jpg", @content_type="image/jpeg", @headers="Content-Disposition: form-data; name=\"debt[document][document]\"; filename=\"pexels-photo (2).jpg\"\r\nContent-Type: image/jpeg\r\n">}}, "commit"=>"Create Debt"}
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"fEmDQnog42ug97IllLL5A6g7oNueLaXIYwKpOEEqBwwjRdVkncNoPbeZuHsuD/HWz1PWGnD7m6lUyZmRJCKS9A==", "debt"=>{"amount"=>"", "details"=>"", "debtor_attributes"=>{"business_name"=>"", "abn"=>"", "first_name"=>"", "mobile_number"=>"", "last_name"=>"", "phone_number"=>"", "email"=>""}, "creditor_attributes"=>{"business_name"=>"", "abn"=>"", "first_name"=>"", "mobile_number"=>"", "last_name"=>"", "phone_number"=>"", "email"=>""}, "document"=>{"document"=>#<ActionDispatch::Http::UploadedFile:0x007f8fbbee2698 @tempfile=#<Tempfile:/var/folders/sn/t0vd19_x6mg1fkn8b4x1v8lm0000gn/T/RackMultipart20160518-27972-zmqd57.jpg>, @original_filename="pexels-photo (2).jpg", @content_type="image/jpeg", @headers="Content-Disposition: form-data; name=\"debt[document][document]\"; filename=\"pexels-photo (2).jpg\"\r\nContent-Type: image/jpeg\r\n">}}, "commit"=>"Create Debt"}
  User Load (0.2ms)  SELECT  "users".* FROM "users" WHERE "users"."id" = $1  ORDER BY "users"."id" ASC LIMIT 1  [["id", 1]]
  User Load (0.2ms)  SELECT  "users".* FROM "users" WHERE "users"."id" = $1  ORDER BY "users"."id" ASC LIMIT 1  [["id", 1]]
Unpermitted parameter: document
Unpermitted parameter: document
  Role Load (0.1ms)  SELECT "roles".* FROM "roles" INNER JOIN "users_roles" ON "roles"."id" = "users_roles"."role_id" WHERE "users_roles"."user_id" = $1 AND (((roles.name = 'admin?') AND (roles.resource_type IS NULL) AND (roles.resource_id IS NULL)))  [["user_id", 1]]
  Role Load (0.1ms)  SELECT "roles".* FROM "roles" INNER JOIN "users_roles" ON "roles"."id" = "users_roles"."role_id" WHERE "users_roles"."user_id" = $1 AND (((roles.name = 'admin?') AND (roles.resource_type IS NULL) AND (roles.resource_id IS NULL)))  [["user_id", 1]]
Unpermitted parameter: document
Unpermitted parameter: document
Unpermitted parameter: document
Unpermitted parameter: document
Unpermitted parameter: document
Unpermitted parameter: document
   (0.1ms)  BEGIN
   (0.1ms)  BEGIN
  SQL (0.3ms)  INSERT INTO "creditors" ("business_name", "first_name", "last_name", "email", "mobile_number", "phone_number", "user_id", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9) RETURNING "id"  [["business_name", ""], ["first_name", ""], ["last_name", ""], ["email", ""], ["mobile_number", ""], ["phone_number", ""], ["user_id", 1], ["created_at", "2016-05-18 01:10:27.139053"], ["updated_at", "2016-05-18 01:10:27.139053"]]
  SQL (0.3ms)  INSERT INTO "creditors" ("business_name", "first_name", "last_name", "email", "mobile_number", "phone_number", "user_id", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9) RETURNING "id"  [["business_name", ""], ["first_name", ""], ["last_name", ""], ["email", ""], ["mobile_number", ""], ["phone_number", ""], ["user_id", 1], ["created_at", "2016-05-18 01:10:27.139053"], ["updated_at", "2016-05-18 01:10:27.139053"]]
  SQL (0.2ms)  INSERT INTO "debtors" ("business_name", "first_name", "last_name", "email", "mobile_number", "phone_number", "user_id", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9) RETURNING "id"  [["business_name", ""], ["first_name", ""], ["last_name", ""], ["email", ""], ["mobile_number", ""], ["phone_number", ""], ["user_id", 1], ["created_at", "2016-05-18 01:10:27.140363"], ["updated_at", "2016-05-18 01:10:27.140363"]]
  SQL (0.2ms)  INSERT INTO "debtors" ("business_name", "first_name", "last_name", "email", "mobile_number", "phone_number", "user_id", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9) RETURNING "id"  [["business_name", ""], ["first_name", ""], ["last_name", ""], ["email", ""], ["mobile_number", ""], ["phone_number", ""], ["user_id", 1], ["created_at", "2016-05-18 01:10:27.140363"], ["updated_at", "2016-05-18 01:10:27.140363"]]
  SQL (0.3ms)  INSERT INTO "debts" ("details", "user_id", "status", "creditor_id", "debtor_id", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5, $6, $7) RETURNING "id"  [["details", ""], ["user_id", 1], ["status", "Pre Collection"], ["creditor_id", 28], ["debtor_id", 28], ["created_at", "2016-05-18 01:10:27.141270"], ["updated_at", "2016-05-18 01:10:27.141270"]]
  SQL (0.3ms)  INSERT INTO "debts" ("details", "user_id", "status", "creditor_id", "debtor_id", "created_at", "updated_at") VALUES ($1, $2, $3, $4, $5, $6, $7) RETURNING "id"  [["details", ""], ["user_id", 1], ["status", "Pre Collection"], ["creditor_id", 28], ["debtor_id", 28], ["created_at", "2016-05-18 01:10:27.141270"], ["updated_at", "2016-05-18 01:10:27.141270"]]
   (2.0ms)  COMMIT
   (2.0ms)  COMMIT
Redirected to http://localhost:3000/debts/28
Redirected to http://localhost:3000/debts/28
Completed 302 Found in 20ms (ActiveRecord: 3.1ms)
Completed 302 Found in 20ms (ActiveRecord: 3.1ms)

I have permitted the params in the controller

    def debt_params
  params.require(:debt).permit(:user_id, :amount, :commission, :invoice_issued, :invoice_date, :status, :details,
  document_attributes: [:id, :debt_id, :document],
  debtor_attributes: [:id, :user_id, :business_name, :abn, :first_name, :last_name, :email, :mobile_number, :phone_number],
  creditor_attributes: [:id, :user_id, :business_name, :abn, :first_name, :last_name, :email, :mobile_number, :phone_number])
end

The model accepts nested attributes for

class Debt < ActiveRecord::Base
 belongs_to :user
 belongs_to :creditor
 belongs_to :debtor
 has_many :documents

 accepts_nested_attributes_for :debtor
 accepts_nested_attributes_for :creditor
 accepts_nested_attributes_for :documents
end

Not sure what I'm missing here?


原文:https://stackoverflow.com/questions/37288649
更新时间:2024-01-26 06:01

最满意答案

假设文件按顺序编号,绝对可以使用while循环:

i = 0
while True:
    i += 1
    filename = 'arc.%d.txt' % i
    try:
        with open(filename, 'r') as file_handle:
            ...
    except IOError:
        break

虽然这对所有的筑巢都变得非常难看。 你最好使用glob.glob东西来获取文件名列表。

from glob import glob
filenames = glob('arc.*.txt')
for filename in filenames:
    with open(filename) as file_handle:
        ...

有一些与第二种方法相关的竞争条件 - 如果文件以某种方式在glob找到它之间以及实际上是时候处理文件之间被删除那么你的程序可能会有糟糕的一天。


It is definitely possible to use a while loop assuming that the files are numbered in sequential order:

i = 0
while True:
    i += 1
    filename = 'arc.%d.txt' % i
    try:
        with open(filename, 'r') as file_handle:
            ...
    except IOError:
        break

Though this becomes pretty ugly with all the nesting. You're probably better off getting the list of filenames using something like glob.glob.

from glob import glob
filenames = glob('arc.*.txt')
for filename in filenames:
    with open(filename) as file_handle:
        ...

There are some race conditions associated with this second approach -- If the file somehow gets deleted between when glob found it and when it actually is time to process the file then your program could have a bad day.

相关问答

更多

相关文章

更多

最新问答

更多
  • 您如何使用git diff文件,并将其应用于同一存储库的副本的本地分支?(How do you take a git diff file, and apply it to a local branch that is a copy of the same repository?)
  • 将长浮点值剪切为2个小数点并复制到字符数组(Cut Long Float Value to 2 decimal points and copy to Character Array)
  • OctoberCMS侧边栏不呈现(OctoberCMS Sidebar not rendering)
  • 页面加载后对象是否有资格进行垃圾回收?(Are objects eligible for garbage collection after the page loads?)
  • codeigniter中的语言不能按预期工作(language in codeigniter doesn' t work as expected)
  • 在计算机拍照在哪里进入
  • 使用cin.get()从c ++中的输入流中丢弃不需要的字符(Using cin.get() to discard unwanted characters from the input stream in c++)
  • No for循环将在for循环中运行。(No for loop will run inside for loop. Testing for primes)
  • 单页应用程序:页面重新加载(Single Page Application: page reload)
  • 在循环中选择具有相似模式的列名称(Selecting Column Name With Similar Pattern in a Loop)
  • System.StackOverflow错误(System.StackOverflow error)
  • KnockoutJS未在嵌套模板上应用beforeRemove和afterAdd(KnockoutJS not applying beforeRemove and afterAdd on nested templates)
  • 散列包括方法和/或嵌套属性(Hash include methods and/or nested attributes)
  • android - 如何避免使用Samsung RFS文件系统延迟/冻结?(android - how to avoid lag/freezes with Samsung RFS filesystem?)
  • TensorFlow:基于索引列表创建新张量(TensorFlow: Create a new tensor based on list of indices)
  • 企业安全培训的各项内容
  • 错误:RPC失败;(error: RPC failed; curl transfer closed with outstanding read data remaining)
  • C#类名中允许哪些字符?(What characters are allowed in C# class name?)
  • NumPy:将int64值存储在np.array中并使用dtype float64并将其转换回整数是否安全?(NumPy: Is it safe to store an int64 value in an np.array with dtype float64 and later convert it back to integer?)
  • 注销后如何隐藏导航portlet?(How to hide navigation portlet after logout?)
  • 将多个行和可变行移动到列(moving multiple and variable rows to columns)
  • 提交表单时忽略基础href,而不使用Javascript(ignore base href when submitting form, without using Javascript)
  • 对setOnInfoWindowClickListener的意图(Intent on setOnInfoWindowClickListener)
  • Angular $资源不会改变方法(Angular $resource doesn't change method)
  • 在Angular 5中不是一个函数(is not a function in Angular 5)
  • 如何配置Composite C1以将.m和桌面作为同一站点提供服务(How to configure Composite C1 to serve .m and desktop as the same site)
  • 不适用:悬停在悬停时:在元素之前[复制](Don't apply :hover when hovering on :before element [duplicate])
  • 常见的python rpc和cli接口(Common python rpc and cli interface)
  • Mysql DB单个字段匹配多个其他字段(Mysql DB single field matching to multiple other fields)
  • 产品页面上的Magento Up出售对齐问题(Magento Up sell alignment issue on the products page)