由于未经许可的参数而无法保存

时间:2014-04-09 11:29:12

标签: ruby-on-rails

您好在Rails应用程序中我有一个以Scaffold方式生成的表单,用户在其他字段中输入到达和离开字段。 Rails会自动生成年份,月份,月份,小时,分钟和其他字段的下拉,以便进行编辑,查看等,但在尝试更新到达和离开字段时失败。数据库未更新到达和离开时间戳而其他字段正常更新。

有关如何正确插入数据库中的日期字段的任何想法吗?

这是我的数据库表:

class CreateLineItems < ActiveRecord::Migration
  def change
    create_table :line_items do |t|
      t.belongs_to :venue, index: true
      t.belongs_to :route, index: true
      t.text :comment
      t.integer :rating
      t.string :price
      t.integer :order
      t.timestamp :arrival
      t.timestamp :departure

      t.timestamps
    end
  end
end

这是来自Controller:

def permitted_params
params.permit(:line_item => [:comment, :rating ,:price,:order ,
{:arrival=>   [],:departure=>[]} ,:id])          
end

这来自Log:

Processing by LineItemsController#update as HTML
Parameters: {"utf8"=>"✓",

 "authenticity_token"=>"beEbBrCOPKwx7U6pJbJEi9V8Mojt8Zkltco82f1gEZU=", "line_item"=>`{"route_id"=>"1", "comment"=>"test 123", "rating"=>"2", "price"=>"10 `euros", "order"=>"9", "arrival(1i)"=>"2010", "arrival(2i)"=>"7", "arrival(3i)"=>"15", `"arrival(4i)"=>"11", "arrival(5i)"=>"13", "departure(1i)"=>"", "departure(2i)"=>"", "departure(3i)"=>"", "departure(4i)"=>"", "departure(5i)"=>""}, "commit"=>"Update Line `item", "id"=>"21"}

Unpermitted parameters: route_id, arrival(1i), arrival(2i), arrival(3i), arrival(4i), arrival(5i), departure(1i), departure(2i), departure(3i), departure(4i), departure(5i)
Unpermitted parameters: utf8, _method, authenticity_token, commit, id
(3.1ms)  BEGIN
SQL (10.8ms)  UPDATE "line_items" SET "order" = $1, "updated_at" = $2 WHERE "line_items"."id" = 21  [["order", 9], ["updated_at", Wed, 09 Apr 2014 10:56:06 UTC +00:00]]

编辑:

这是更改建议后的新日志,现在没有任何值存储在表中:

Started PATCH "/line_items/21" for 127.0.0.1 at 2014-04-09 14:34:07 +0300
Processing by LineItemsController#update as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"beEbBrCOPKwx7U6pJbJEi9V8Mojt8Zkltco82f1gEZU=", "line_item"=>{"route_id"=>"1", "comment"=>"test 123", "rating"=>"7", "price"=>"20 euros", "order"=>"1", "arrival(1i)"=>"2012", "arrival(2i)"=>"8", "arrival(3i)"=>"15", "arrival(4i)"=>"13", "arrival(5i)"=>"14", "departure(1i)"=>"2012", "departure(2i)"=>"5", "departure(3i)"=>"15", "departure(4i)"=>"11", "departure(5i)"=>"14"}, "commit"=>"Update Line item", "id"=>"21"}
  LineItem Load (4.5ms)  SELECT "line_items".* FROM "line_items" WHERE "line_items"."id" = $1 LIMIT 1  [["id", "21"]]
Unpermitted parameters: route_id
   (4.6ms)  BEGIN
   (3.9ms)  COMMIT
Redirected to http://localhost:3000/line_items/21
Completed 302 Found in 31ms (ActiveRecord: 13.1ms)

2 个答案:

答案 0 :(得分:3)

应该是:

params.require(:line_item).permit(:comment, :rating, :price, :order, :arrival, :departure, :id)

答案 1 :(得分:0)

我遇到了类似的问题,这是因为我在url:中拥有model:而不是form_with

错误:

<%= form_with(url: @message, method: :post) do |f| %> 

<%= f.label :body %> 
<%= f.text_area :body %> 
<%= f.hidden_field user_id: current_user.id %>
<%= f.submit "Send", class: "btn btn-primary" %>
<% end %>

右:

<%= form_with(model: @message, method: :post) do |f| %> 

<%= f.label :body %> 
<%= f.text_area :body %> 
<%= f.hidden_field user_id: current_user.id %>
<%= f.submit "Send", class: "btn btn-primary" %>
<% end %>