Когда необходимо использовать УСПОКОИТЕЛЬНЫЕ контроллеры в приложении для направляющих, и когда должен Вы нет?

В общем, ваше решение, кажется, работает, см. Следующий пример:

Edit custom-decorator-injection


Однако, есть некоторые ошибки в объявлениях вашего модуля:

1) В вашем AppModule AuthService недоступен, так как AuthModule не импортируется напрямую или не экспортируется с помощью SecuredModule. Вот почему вы получаете ошибку.

2) Вам не нужно объявлять своих охранников в каком-либо модуле, они просто будут доступны по всему миру. Поместите только модули в ваш массив imports.

3) Вы предоставляете AuthService несколько раз, поэтому у вас будут разные его экземпляры. Вы должны предоставить его только один раз, а затем только export (или реэкспортировать) вашего провайдера, но не предоставлять его снова.

4) ReflectMetadata устарела в v6; используйте вместо этого SetMetadata.

5
задан jbwiv 25 March 2009 в 04:42
поделиться

4 ответа

Сделайте ресурс каждой модели верхнего уровня в Вашей системе. Верхним уровнем я имею в виду модели, которые независимы и имеют значение за пределами связанной модели. Обычно это - большинство моделей. В следующем Положении в качестве примера и Кандидате верхний уровень. Вы могли полагать, что Кандидат состоял из PastEmployment и положений, к которым она подала заявку. К приложениям к позициям и предшествующей истории работы можно получить доступ через ресурс Кандидата, так как они не существуют самостоятельно.

Модели

class Position
  has_many :candidate_positions
  has_many :candidates, :through => :candidate_positions
end

class Candidate
  has_many :candidate_positions
  has_many :positions, :through => :candidate_positions
  has_many :past_employments
  accepts_nested_attributes_for :past_employments
  accepts_nested_attributes_for :candidate_positions
end

class PastEmployment
  belongs_to :candidate
end

class CandidatePosition
  belongs_to :candidate
  belongs_to :position
end

Маршруты

map.resources :positions
map.resources :candidates

Используйте ненаходчивый контроллер для взаимодействий с пользователем тот промежуток модели. Например, если Вы хотели иметь a HomeController это показывает доступные положения, а также недавних кандидатов, которые были бы новым, простым контроллером. Если Вы хотите отредактировать какую-либо информацию об этом контроллере, классном! Вы уже имеете контроллеры в наличии для обработки сообщений формы, которые будут автоматически соединены проводом с <% form_for @candidate %>. Можно представить набор положений с <%= render @positions %>, и потому что Вы сделали их ресурсом, направляющие будут знать для заглядывания views/positions/_position.html.erb для соответствующего частичного.

Конечный результат должен состоять в том, что Вы никогда не пишете логику для обработки персистентности объекта больше чем в одном месте. Именно тогда контроллеры становятся сложными, и формы выходят из-под контроля. Это также означает, что направляющие и внешние системы знают, где получить и хранить объекты. Тот же URL, тот же контроллер, просто другой формат.

5
ответ дан 14 December 2019 в 13:47
поделиться

отказ от ответственности: Я знаю направляющие, но я все еще - в значительной степени новичок. Короткий Ответ: REST и помощники формы являются совершенно другими областями.

Длинный ответ: Насколько я понимаю Представительная Передача состояния только свободно связана с фактическим рендерингом форм и представлениями.

REST действительно имеет отношение к контроллерам, и к определенному расширяют модели. Идея состоит в том, что вместо того, чтобы пытаться думать обо всем разговоре с клиентом, Вы пишете веб-приложение для ответа определенными, предсказуемыми способами к отдельным клиентским сообщениям.

т.е. если клиент ПОЛУЧАЕТ модель, Вы просто получаете ее, форматируете ее для них, отправляете ее им и забываете об этом. если клиент ОТПРАВЛЯЕТ какое-то обновление, Вы изменяете состояние веб-приложений, чтобы отразить, что, передайте любой ответ обратно и затем забудьте об этом. Любое будущее ДОБИРАЕТСЯ, или POST посмотрит на новое состояние, но не сообщение, которое создало его.

Так, действительно, действительно ли приложение является УСПОКОИТЕЛЬНЫМ, зависит не действительно от того, насколько сложный модель, но от того, как пользователи взаимодействуют с ним. Приложение означало быть по крайней мере несколько агностическим клиентом, который является информационно-центрическим, хороший кандидат на REST. Что-то, что полагается в большой степени на сессии, и взаимодействующий с определенным пользователем, и центрально процессом, не могло бы быть таким хорошим кандидатом.

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

Так, каков Ваш основной вопрос? У Вас есть конкретный вопрос о помощниках формы направляющих? о контроллерах направляющих? или что-то характерное для REST?

0
ответ дан 14 December 2019 в 13:47
поделиться

Я не знаю RoR, таким образом, я сделаю, генерируют операторы на REST.

REST и ROI рассматривают URL как серию существительных, и это использует методы HTTP, любят, ПОЛУЧАЮТ, POST, ПОМЕЩАЮТ и УДАЛЯЮТ как глаголы. Эта модель работает на CRUD, и даже на модели с несколькими ассоциациями. Так как URL представляют ресурсы, связанные объекты могут быть выражены как список URL.

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

0
ответ дан 14 December 2019 в 13:47
поделиться

Вы могли бы проверить эту серию Railscasts, который говорит о, много отношения и формы в контексте REST:

1
ответ дан 14 December 2019 в 13:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: