2015-12-24 4 views
1

Iam new in Ruby on Rails. Обычно я работаю с другими веб-языками, и теперь (конечно) я пытаюсь сравнить его с другими языками, используя в Интернете.Ruby on Rails - контроллер без просмотров

Но иногда у меня есть проблема, чтобы понять философию и характер Ruby on Rails. Конечно, я понимаю концепцию MVC.

Но теперь я не уверен: Является ли ist OK для создания и использования контроллера без просмотров? В некоторых случаях вам нужен «класс» для некоторых полезных функций, используемых другими контроллерами, у которых есть представления. Или это лучший стиль для использования модуля?

Я пытаюсь найти его, прочитав много статей и примеров, но не нашел подробную информацию об этом контенте.

+0

нет, если ему не нужен вид, его не нужно размещать в контроллере, это должно быть сделано внутри модели –

+0

, вы также можете создавать новые классы/модули libs и загружать их, если вам нужна настраиваемая логика, которая не привязан к ActiveRecord – blnc

ответ

-1

Контроллер обрабатывает запрос и отображает соответствующий шаблон представления. Таким образом, контроллер без взгляда абсолютно вздор.

Каждый раз, когда запрос будет исполнять этот контроллер, он просто закончится отсутствием ошибки шаблона, поэтому вам нужно будет создать папку вида и поместить в нее пустые файлы с именем действия, что, очевидно, глупо.

+0

Очистить оператор. THX :) – Denis

+0

не обязательно; вы могли бы «отрисовать ничего: true» в конце действия и не иметь файла в папке просмотра. – blnc

+0

. Вы можете захотеть обслуживать различные приложения с помощью ваших контроллеров, где вы используете свои представления и где вы обслуживаете различные клиентские приложения, Данные JSON только, например. Rails не будет жаловаться, если у вас нет представлений в этом сценарии, если вы используете 'render json:', но он будет сбой, если вы используете 'render status:: no_content'. Когда вам не нужно возвращать контент в запрос, вы должны использовать 'head: no_content', например –

3

При разработке Ruby On Rails приложения, рекомендуется поместить большую часть бизнес-логики в моделей, поэтому для контроллеров логика должна быть минимальной предоставить информацию для взглядов, так что если он Безразлично» t работать с вероятностью, что вам нужен контроллер, очень низкий.

0

Общие методы контроллера могут быть размещены в ApplicationController. Кроме того, в Rails 4 есть проблемы (приложения/контроллеры/проблемы /), где вы можете поместить модули с помощью методов, которые могут использоваться несколькими контроллерами.

1

Можно ли создавать и использовать контроллер без взглядов

Да, это нормально.

Главное, чтобы иметь в виду, что Ruby/Rails - это object orientated.

Это означает, что каждый, что вы делаете с контроллерами/моделями и т. Д., Должен иметь «объект», который вы манипулируете по своему ядру.

Имея это в виду, это означает, что вы можете иметь контроллер без соответствующих представлений, так как иногда вам просто нужно управлять объектом и возвращать простой ответ (например, с помощью Ajax).

-

Мы часто виды повторно использовать для различных действий (это, что считается не имеющий вид):

#app/controllers/application_controller.rb 
class ApplicationController < ActionController::Base 
    def search 
     render :index, layout: false 
    end 
end 

Понятие skinny controller, fat model звук в принципе, должны учитывать моменты, когда вам могут понадобиться небольшие функциональные возможности, которые могут обрабатываться только :

#app/controllers/users_controller.rb 
class UsersController < ApplicationController 
    def update 
     @user = User.find params[:id] 
     @user.update 
     respond_to do |format| 
     format.js {render nothing: true} 
     format.html 
     end 
    end 
end 

очень рудиментарным пример Rails является МкДрайв:

  • view = входной интерфейс
  • controller = принимает заказ & поставляет
  • model = получает заказ упакован и т.д. в интерфейсе

Бывают моменты, когда контроллер m ay не нужно представление (например, если вы обновляете свой заказ с конкретными требованиями к диетике), и, таким образом, представление о том, что каждое действие контроллера должно иметь представление, является ложным.

Речь идет о том, чтобы сделать ваш контроллер достаточно универсальным для правильного управления вашими объектами.

Смежные вопросы