任务模型只有一个字段:title。
我已经制作了一个表单,用一个字段添加一个新任务:title
但是在create方法中,我们可以看到标题被“test”
填充但在查询中,我们可以看到“无”......任何想法?
感谢
Started POST "/tasks" for 127.0.0.1 at 2013-01-03 13:16:44 -0500
Processing by TasksController#create as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"iWaK1QX6VCyeUCueLrRNErJEtdm/ZNxg4d3LU0vKjnY=", "task"=>{"title"
=>"test"}, "commit"=>"Add a new task "}
(0.1ms) begin transaction
SQL (0.9ms) INSERT INTO "tasks" ("created_at", "title", "updated_at") VALUES (?, ?, ?) [["created_at", Thu, 03 Jan 2013 18:16:44 UTC +00:00], ["title", nil], ["updated_at", Thu, 03 Jan 2013 18:16:44 UTC +00:00]]
(0.8ms) commit transaction
Redirected to http://0.0.0.0:3000/tasks
Completed 302 Found in 8ms (ActiveRecord: 1.8ms)
这是创建方法
def create
@task = Task.new(params[:post])
if @task.save
redirect_to tasks_path, :notice => "Task successfully saved"
else
render "new"
end
end
答案 0 :(得分:6)
问题在于您提取post
而不是task
@task = Task.new(params[:task])
答案 1 :(得分:1)
确保您的属性可访问,否则您将无法对其进行批量指定更改:
class Task < ActiveRecord::Base
attr_accessible :title
end
您应该进行单元测试,以正确运用模型,以确保它们可以像在控制器中一样进行更新。这些将很快发现任何未正确标记的属性。
Rails 2.3和之前的版本对此并不严格,你可以批量分配任何东西,但Rails 3不会分配这些属性,除非它们是特别允许的。
答案 2 :(得分:0)
确保
attr_accessible:title
在您的任务模型(task.rb)
中<强>更新强> 将params [:post]改为params [:task]:
@task = Task.new(params[:task])
答案 3 :(得分:-2)
在tasks_controller.rb中,您必须具有create方法,该方法将处理POST
请求并接受通过请求传递的参数。
def create
task = Task.new(params[:task])
task.save
end