Это мой текущий метод Create в CommentsControllerпроблемы с создания метода в CommentsController
def create
@place = Place.find(params[:place_id])
@comment = @place.comments.create(comment_params)
@comment.user = current_user
if @comment.save
redirect_to place_path(@place)
else
render "comments/_form"
end
end
Я сказал кто-то, что попадает в базу данных дважды. После проверки журналов, это результат:
Started GET "/places/9" for 127.0.0.1 at 2015-01-22 15:01:47 -0800
Processing by PlacesController#show as HTML
Parameters: {"id"=>"9"}
Place Load (0.3ms) SELECT "places".* FROM "places" WHERE "places"."id" = ? LIMIT 1 [["id", 9]]
Comment Load (0.2ms) SELECT "comments".* FROM "comments" WHERE "comments"."place_id" = ? [["place_id", 9]]
User Load (0.2ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT 1 [["id", 2]]
CACHE (0.0ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT 1 [["id", 2]]
CACHE (0.0ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT 1 [["id", 2]]
CACHE (0.0ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT 1 [["id", 2]]
Rendered comments/_comment.html.erb (8.0ms)
Rendered comments/_form.html.erb (2.7ms)
Rendered places/show.html.erb within layouts/application (73.3ms)
User Load (0.2ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT 1 [["id", 2]]
Completed 200 OK in 532ms (Views: 529.4ms | ActiveRecord: 1.0ms)
Так, очевидно, я не хочу быть неэффективным в моем коде.
Это то, что человек предложил вместо:
comment_params[:user_id] = current_user.id
if @places.comments.create(comment_params)
.....
else
....
end
Итак ... Я переписал метод Create это:
def create
@place = Place.find(params[:place_id])
@comment = @place.comments.create(comment_params)
comment_params[:user_id] = current_user.id
if @places.comments.create(comment_params)
redirect_to place_path(@place)
else
render "comments/_form"
end
end
Upon переписанный метод создания, я получаю эту ошибку, когда Я стараюсь оставить комментарий: undefined method comments for nil:NilClass
Помогите мне понять, как правильно переписать этот метод Create, пожалуйста?
Sidenote - Не уверен, что, если это актуально, если да, пожалуйста, адрес его, если нет, пожалуйста, игнорировать
После проверки последний комментарий в консоли рельсы, я был поражен, увидев, что user_id является ноль, тогда как для места это не так.
Место принадлежит к пользователю Комментария принадлежит к пользователю
Пользователя имеет много как Место и комментарий
У вас есть опечатка. Вероятно, это должно быть \ @place not \ @places в вашем операторе if. –
@AndreasGnyp, спасибо, что указал. Ценить это. – user273072545345