1

タスク モデルには、タイトルという 1 つのフィールドしかありません。

1つのフィールドで新しいタスクを追加するフォームを作成しました:タイトル

しかし、create メソッドでは、タイトルが「test」で埋められていることがわかります。

しかし、クエリでは「nil」が表示されます...何かアイデアはありますか?

ありがとう

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
4

4 に答える 4

6

post問題は、代わりにフェッチしていることですtask

@task = Task.new(params[:task])
于 2013-01-03T18:31:59.633 に答える
1

属性がアクセス可能であることを確認してください。そうしないと、変更を一括して割り当てることができなくなります。

class Task < ActiveRecord::Base
  attr_accessible :title
end

モデルを適切に実行する単体テストを実行して、コントローラーで行うように更新できることを確認する必要があります。これらは、正しくフラグが立てられていない属性をすばやく明らかにします。

Rails 2.3 以前では、これは厳密ではありませんでした。何でもまとめて割り当てることができましたが、Rails 3 では、特に許可されていない限り、これらの属性を割り当てることはありません。

于 2013-01-03T18:30:42.797 に答える
0

確実に

attr_accessible :タイトル

Task モデル (task.rb) にある

更新: params[:post] を params[:task] に変更:

@task = Task.new(params[:task])
于 2013-01-03T18:31:07.400 に答える
-2

tasks_controller.rb には、 request を処理POSTし、 request を介して渡されるパラメーターを受け入れる create メソッドが必要です。

  def create 
    task = Task.new(params[:task]) 
    task.save
  end
于 2013-01-03T18:28:13.043 に答える