Как написать общий код пути Rails для объекта суперкласса в частичном представлении Rails? - PullRequest
0 голосов
/ 16 февраля 2012

Задача

Мое приложение управляет ProjElements, которые подразделяются на:

  • Milestone
  • Task
  • Decision
  • ... и т. Д.

Для данного ProjElement show.html.erb вы можете прокомментировать этот экземпляр элемента проекта (например, вы можете добавить комментарий к Milestone XYZ или Decision ABC). Как это:

// display project element specific stuff
//  - e.g. show.html.erb for Milestone has milestone-specific stuff
//  - e.g. show.html.erb for Decision has decision-specific stuff

// provide comment functionality
//  - e.g. for Milestone's show.html.erb, code looks like

    <%= form_for [@milestone, Comment.new] do |f| %>
      <% if @milestone.comments.size > 0 %>
         ...
      <% end %>
      <% f.submit %>
    <% end %>

Предлагаемый подход

  • Я планирую использовать частичное для кода комментария и использовать его в различных show.html.erb представлениях для различных элементов проекта, согласно DRY. Но ...

  • Как мне написать универсальный код для частичного, в стиле Rails, чтобы частичное могло работать с различными элементами проекта?

1 Ответ

2 голосов
/ 16 февраля 2012

Вы можете передать экземпляр подкласса элемента через локальный хеш.В приложении / views / milestones / show.html.erb

render :partial => 'shared/comments', :locals => { :element => @milestone }

В приложении / views / shared / _comments.html.erb

<% form_for [element, Comment.new] do |f| %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...