как создать комментарий к конкретному сообщению? - PullRequest
0 голосов
/ 23 июня 2019

Я делаю блог в рельсах. Я хочу понять фактическое значение # кода

@post = Post.find(params[:post_id])
@comment = @post.comments.create(comments_params)

1 Ответ

0 голосов
/ 23 июня 2019

Ответ, вероятно, на любом учебном пособии, которое вы читаете, но, к счастью, Ruby и Rails легко читаются, если вы знаете основы.

@post = Post.find(params[:post_id]) означает, что @post, переменная экземпляра, которая будет содержать ваше сообщение, должна быть установлена ​​в (=) значение, возвращаемое из таблицы Post, путем find записи, чья id поле соответствует значению в поле post_id в параметрах, переданных этому контроллеру в первую очередь.

@comment = @post.comments.create(comments_params) означает, что для переменной экземпляра @comment должно быть установлено (=) значение, возвращаемое при запуске метода comments.create для только что созданного объекта @post. То есть код принимает объект @post и запускает на нем метод comments.create, так что созданный комментарий будет иметь тот же идентификатор, что и это сообщение (то есть будет связан с ним в базе данных). Другие части записи комментария (например, текст самого комментария) будут взяты из переменной comments_params, которая будет отфильтрованной версией переменной params, которую вы использовали в строке ранее - ищите приватную функцию с именем comments_params, который сообщает, какие поля из params могут быть переданы в созданный комментарий. (Это так называемая функция «сильных параметров» в Rails, которая позволяет вам убедиться, что пользователи не пытаются пробраться через ваш код, чтобы взломать ваше приложение.)

Если вы хотите узнать больше о параметрах и объектах, взгляните на то, что передается вокруг вашего приложения, используя byebug или через параметры отладки (поместите код <%= debug(params) if Rails.env.development? %> в макет приложения, чтобы увидеть множество интересных значений на каждой странице).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...