0
我創造了這個形式:Rails的提交表單導致錯誤
<%= form_for @task do |task| %>
<%= task.hidden_field :user_id, :value => @user.id %>
<%= task.label :task %>
<%= task.text_area :task %>
<%= task.label :deadline %>
<%= task.text_field :deadline %>
<%= task.submit "Add" %>
<% end %>
和控制器:
def new
@task = Todo.new
end
def create
@task = Todo.new(params[:task])
if @task.save
set_flash "Task added"
redirect_to action: 'index'
else
set_flash "Task adding failed, Please try again"
redirect_to action: 'index'
end
end
def set_user
@user = current_user
end
當我提交表單我得到這個錯誤:
SQLite3::ConstraintException: todos.user_id may not be NULL: INSERT INTO "todos" ("completed", "created_at", "deadline", "task", "updated_at", "user_id") VALUES (?, ?, ?, ?, ?, ?)
是什麼問題?
編輯:
這是由軌道通過parmaters:
{"utf8"=>"✓",
"authenticity_token"=>"oJr4ii4szyBVAacBJDNYcZn8QWGrFij4dF1wqD1Fvic=",
"todo"=>{"user_id"=>"1",
"task"=>"Hello World",
"deadline"=>"03/20/2013"},
"commit"=>"Add"}
,這是模型:
attr_accessible :user_id, :deadline, :task, :completed
感謝
'user_id'不是零請求參數和螢火蟲'hidden_filed'不是nil.added parmaters主要問題 – Wahtever 2013-03-21 18:34:38
它可能無法在您的模型中訪問,然後(檢查您的'attr_accessible '並確保'user_id'在那裏)。但是,您不希望根據「hidden_field」的值來指定用戶:這會將用戶暴露給潛在用戶,這些用戶可能通過簡單地操縱他們在表單中發送的數據向其他用戶分配待辦事項。 – Veraticus 2013-03-21 18:37:12
我在'attr_accessible'中有'user_id',我通過控制器分配了'user_id',但是現在它會拋出相同的錯誤,而不是'user_id'值,它現在要求'task'值。 **編輯**:通過控制器分配所有值允許表單成功提交 – Wahtever 2013-03-21 18:45:20