Привет, все. Работаю над моим первым приложением на Rails.
Я обыскал все вокруг - прочитал кучу учебных пособий, статей и сообщений на форуме, посмотрел несколько скринкастов и нашел несколько примеров, близких к тому, что я пытаюсь сделать (особенно http://railscasts.com/episodes/154-polymorphic-association и ep 196 о вложенных модельных формах), но не совсем.
У меня есть две модели (Podcast и BlogPost), которые должны быть комментируемыми, и у меня есть модель Comment, которая полиморфно связана с обеими. Приведенные выше Railscasts имели очень похожий пример (ep 154), но Райан использовал полный набор вложенных маршрутов, поэтому были специальные шаблоны для добавления и редактирования комментариев. Я хочу показать список комментариев прямо на странице Podcast или BlogPost вместе с формой добавления комментария внизу. Мне не нужен отдельный шаблон / маршрут добавления, и мне не нужна возможность редактировать, только удалять.
Это довольно распространенный дизайн в сети, но я не могу найти пример Rails конкретно об этом шаблоне. Вот мое текущее понимание:
Мне, конечно, нужны маршруты для действий создания и удаления, но с ними не связано никаких шаблонов. Я также предполагаю, что правильным подходом является создание частичного фрагмента, который может быть включен внизу как шаблона показа Podcast, так и BlogPost. Логическое имя для частичного мне кажется что-то вроде _comments.html.haml. Я знаю, что существует общее соглашение, чтобы объект, переданный частичному, был назван в честь шаблона, но вызов объекта 'comments', кажется, не соответствует моему варианту использования, так как мне действительно нужно передать комментируемый объект (Podcast или BlogPost) ). Итак, я думаю, я бы использовал опцию localals для частичного вызова рендера? (: commentable => @podcast).
Внутри частичного я мог бы вызвать commentable.comments, чтобы получить коллекцию комментариев, визуализировать это со вторым частичным (на этот раз с обычным сценарием использования, вызывая частичный _comment.html.haml), затем создать форму, которая отправляет к чему? В остальном это должен быть POST для коллекции, который будет / podcast | blogpost /: id / comments, и я думаю, что вспомогательным для этого является podcast_comments_path (podcast), если это был подкаст - не уверен, что делать, хотя , так как я использую полиморфные комментарии. Это вызовет действие Comment.create, которое затем необходимо будет перенаправить обратно на путь подкаста | blogpost /podcast|blogpost/:id.
Все это немного ошеломляет, поэтому я действительно надеялся найти скринкаст или пример, который конкретно реализует этот дизайн.