Как Rails узнает, какое частичное имя отображать при отображении коллекции? - PullRequest
0 голосов
/ 25 февраля 2019

Я читал руководство по началу работы с Rails и застрял в разделе 7.1.Я не понимаю, как _комментарий, который они создают в руководстве, можно отобразить в представлении шоу, просто написав

  <h2>Comments</h2>
  <%= render @article.comments %>

Я скопировал и вставил остальную часть руководства с кодом, чтобы вы поняли контекст:

"Сначала мы сделаем частичный комментарий для извлечения, показывая все комментарии к статье. Создайте файл app / views / comments / _comment.html.erb и поместите в него следующее:"


<p>
  <strong>Commenter:</strong>
  <%= comment.commenter %>
</p>

<p>
  <strong>Comment:</strong>
  <%= comment.body %>
</p>

"Тогда вы можете изменить app / views / article / show.html.erb так, чтобы он выглядел следующим образом:"


<p>
  <strong>Title:</strong>
  <%= @article.title %>
</p>

<p>
  <strong>Text:</strong>
  <%= @article.text %>
</p>

<h2>Comments</h2>
<%= render @article.comments %>

<h2>Add a comment:</h2>
<%= form_with(model: [ @article, @article.comments.build ], local: true) do |form| %>
  <p>
    <%= form.label :commenter %><br>
    <%= form.text_field :commenter %>
  </p>
  <p>
    <%= form.label :body %><br>
    <%= form.text_area :body %>
  </p>
  <p>
    <%= form.submit %>
  </p>
<% end %>

<%= link_to 'Edit', edit_article_path(@article) %> |
<%= link_to 'Back', articles_path %>

"Теперь это будет отображать частичное в app / views/comments/_comment.html.erb один раз для каждого комментария, который находится в коллекции @ article.comments. Поскольку метод рендеринга выполняет итерации по коллекции @ article.comments, он назначает каждый комментарий локальной переменной с именем, совпадающим с частичным,в этом случае комментарий, который затем будет доступен для показа в партиале. "

Мой вопрос в том, как ruby ​​знает, что мы хотим отрендерить этот конкретный партиал для форматирования каждого комМенты?Имя parlial - _comment, но они даже не упоминают его в статье.Спасибо.

1 Ответ

0 голосов
/ 25 февраля 2019

Отношение has_many :comments, что подразумевает модель типа Comment, что, в свою очередь, подразумевает частичное имя шаблона _comment.Имя шаблона и «подчеркнутая» версия имени модели имеют значение в данном конкретном контексте.

Ruby on Rails выводит из ваших определений много вещей и может автоматически выполнить большую работу для вас, если выследуйте соглашениям.

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