0
これは本番環境では完全に機能していますが、デプロイ時にはうんざりし続けます。奇妙なことは、私は同じコードで同様に設定された別のモデルを持っていることです。user_idのNoMethodErrorを取得しますが、deploy(Rails)の場合のみ
コントローラー:
def new
@task = Task.new
end
def create
@task = Task.new(task_params)
@task.user_id = current_user[:id]
respond_to do |format|
if @task.save
format.html { redirect_to line_url(@task.lines_id), notice: 'Task was successfully created.' }
format.json { render :show, status: :created, location: @task }
else
format.html { render :new }
format.json { render json: @task.errors, status: :unprocessable_entity }
end
end
end
private
# Use callbacks to share common setup or constraints between actions.
def set_task
@task = Task.find(params[:id])
end
# Never trust parameters from the scary internet, only allow the white list through.
def task_params
params.require(:task).permit(:title, :description, :priority, :lines_id, :scene, :icon, :icon_color, :fulltext, :doclink, :user_id)
end
end
がエラー:
2016-05-09T19:09:50.769530+00:00 heroku[router]: at=info method=GET path="/tasks/new?lines_id=9" host=pacific-tor-26709.herokuapp.com request_id=3dc355bb-90b3-4aac-b93d-330f5cb1561c fwd="72.24.207.125" dyno=web.1 connect=1ms service=126ms status=200 bytes=11300
2016-05-09T19:09:53.112272+00:00 heroku[router]: at=info method=POST path="/tasks" host=pacific-tor-26709.herokuapp.com request_id=8ddd3304-7a25-4378-94c3-efc87fb4ac07 fwd="72.24.207.125" dyno=web.1 connect=18ms service=81ms status=500 bytes=1754
2016-05-09T19:09:53.050151+00:00 app[web.1]: Started POST "/tasks" for 72.24.207.125 at 2016-05-09 19:09:53 +0000
2016-05-09T19:09:53.100064+00:00 app[web.1]: Completed 500 Internal Server Error in 26ms
2016-05-09T19:09:53.107108+00:00 app[web.1]:
2016-05-09T19:09:53.107138+00:00 app[web.1]:
2016-05-09T19:09:53.073387+00:00 app[web.1]: Parameters: {"utf8"=>"✓", "authenticity_token"=>"gRLRjpaHGhNWLsJP4HpWb8Yv0hgjLLa0dTzQgSSb6MI=", "task"=>{"icon_color"=>"", "scene"=>"0", "title"=>"test", "description"=>"", "fulltext"=>"", "doclink"=>"", "icon"=>"", "priority"=>"9", "lines_id"=>"9"}, "commit"=>""}
2016-05-09T19:09:53.107137+00:00 app[web.1]: app/controllers/tasks_controller.rb:28:in `create'
2016-05-09T19:09:53.107139+00:00 app[web.1]:
2016-05-09T19:09:53.107135+00:00 app[web.1]: NoMethodError (undefined method `user_id=' for #<Task:0x007fe6f34a60c8>):
2016-05-09T19:09:53.073169+00:00 app[web.1]: Processing by TasksController#create as HTML
一方、生産で、コミットとは問題がありません:
Started POST "/tasks" for 127.0.0.1 at 2016-05-09 13:18:38 -0600
Processing by TasksController#create as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"tCxI70ziZPsxsJQB1PCqHFBrA8KIlnqNOPdsDoUnElE=", "task"=>{"icon_color"=>"", "scene"=>"0", "title"=>"B", "description"=>"", "fulltext"=>"", "doclink"=>"", "icon"=>"", "priority"=>"2", "lines_id"=>"11"}, "commit"=>""}
User Load (0.5ms) SELECT "users".* FROM "users" WHERE "users"."id" = 1 LIMIT 1
(0.0ms) begin transaction
SQL (1.0ms) INSERT INTO "tasks" ("created_at", "description", "doclink", "fulltext", "icon", "icon_color", "lines_id", "priority", "scene", "title", "updated_at", "user_id") VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) [["created_at", "2016-05-09 19:18:38.261089"], ["description", ""], ["doclink", ""], ["fulltext", ""], ["icon", ""], ["icon_color", ""], ["lines_id", 11], ["priority", 2], ["scene", "f"], ["title", "B"], ["updated_at", "2016-05-09 19:18:38.261089"], ["user_id", 1]]
(133.6ms) commit transaction
私は二重の私が持っていたことを確認するためにチェックrake db:deploy on migrateを実行します。
私は確かにユーザーとしてログインしているので、current_userの問題ではないと思います。フォームを表示するにはcurrent_userが必要なので、新しいフォームにアクセスすることさえできません。
本当にありがとうございます。
私は次のように新しいフォームでuser_id
として隠しフィールドを追加することをお勧め
ありがとう、これは間違いなく動作します。私はフォームにユーザーIDを設定することを避けたかったのですが、隠していても開発者コンソールのようなもので値を変えることはできますが、これは間違いなく機能します。私はちょうどコントローラのユーザーIDを設定することが私のモデルの1つではなく、他のモデルでは機能していないことがわかりました。 –
それから '@task = current_user.task.new(task_params)'のようにしてください。 –
完璧、ありがとう! –