Rapid prototyping of applications on the Ruby on Rails

1,097 views

Published on

Ruby & Rails BarCamp 3, 2010, 20 March

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,097
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Rapid prototyping of applications on the Ruby on Rails

  1. 1. Быстрое прототипированиеприложений на Ruby on Rails InheritedResources http://github.com/josevalim/inherited_resources HasScope http://github.com/plataformatec/has_scope Responders http://github.com/plataformatec/responders Formtastic http://github.com/justinfrench/formtastic
  2. 2. Блог за 15 минут
  3. 3. Сделаем это сейчас“Потом разберу их на запчасти.” (C) Филидор Зеленый
  4. 4. PostsController стр. 1class PostsController < ApplicationController # GET /posts # GET /posts.xml def index @posts = Post.all respond_to do |format| format.html # index.html.erb format.xml { render :xml => @posts } end end # GET /posts/1 # GET /posts/1.xml def show @post = Post.find(params[:id]) respond_to do |format| format.html # show.html.erb format.xml { render :xml => @post } end end
  5. 5. PostsController стр. 2# GET /posts/new# GET /posts/new.xmldef new @post = Post.new respond_to do |format| format.html # new.html.erb format.xml { render :xml => @post } endend# GET /posts/1/editdef edit @post = Post.find(params[:id])end
  6. 6. PostsController стр. 3# POST /posts # POST /posts.xml def create @post = Post.new(params[:post]) respond_to do |format| if @post.save flash[:notice] = Post was successfully created. format.html { redirect_to(@post) } format.xml { render :xml => @post, :status =>:created, :location => @post } else format.html { render :action => "new" } format.xml { render :xml => @post.errors, :status => :unprocessable_entity } end end end
  7. 7. PostsController стр .4 .. тут я устал “копипастить”... 85строк для реализации CRUD
  8. 8. Много кода“Ну, что у нас плохого? ” (C) Филидор Зеленый
  9. 9. Меньше кода, больше функционала
  10. 10. InheritedResources. Сосредоточьтесь только надействительно важных вещах
  11. 11. REST Actions, Nested resources & Configurationclass PeopleController < ApplicationController inherited_resources has_many :posts defaults :resource_class => User, :collection_name => users, :instance_name => user actions :index, :show, :new, :createend
  12. 12. URL Helpersresource_url # => /posts/1/comments/#{@comment.to_param}resource_url(comment) # => /posts/1/comments/#{comment.to_param} new_resource_url # => /posts/1/comments/new edit_resource_url # => /posts/1/comments/#{@comment.to_param}/edit edit_resource_url(comment) #=> /posts/1/comments/#{comment.to_param}/edit collection_url # => /posts/1/comments parent_url # => /posts/1
  13. 13. Действия “по умолчанию”Перенаправляем все действия контроллера на стандартные виды
  14. 14. Responders. Мы создаем информационные ресурсы, а не html страницы“Ну вот, познакомьтесь с жителем этой планеты. Они умеют изображать то, что видели.” (с) Профессор Селезньов
  15. 15. Как работают responders в случае запроса xml формата* ищется шаблон соответствующего формата* если шаблона нет, то вызывается метод :to_xml* если объект не отвечает на :to_xml то вызываетсяметод :to_format
  16. 16. HasScope. Фильтрация данных в контроллерахclassPostsController < ApplicationController has_scope :commented, :type => :boolean has_scope :by_authorend/posts#=> работает как обычный запрос/posts?commented=true#=> показ только сообщений с комментариями/posts?commented=true&by_author=john#=> показ откомментированных сообщений пользователя john
  17. 17. Formtastic + InheritedResources. Одна форма на всех.
  18. 18. Formtastic делает для вас ...● быстрое построение формы всего в 4 строки;● выбор элемента управления по типу атребута (paperclip, attachment_fu, belongs_to, has_many, habtm, password, date/time, timezone, country select);● поддержку вложенных(nested) форм;● интеграцию с I18n; ... оставляя доступ к стандартным хелперам.
  19. 19. Птица говорун отличается умом, сообразительностью и стоит целого зоопарка.Не делайте из своего кода зоопарк и будьте капитаном на своем корабле. http://romanvbabenko.com http://romanvbabenko.blogspot.com (c) Roman V. Babenko, Kyiv 2010, Ruby & Rails Barcamp 3, Sat Mar 20

×