Restful 예

10965 단어 htmlAjaxF#RubyRails
만약 당신 이 rails restful 의 일 을 하려 고 한다 면, 먼저 배관 을 보 는 것 을 권장 합 니 다.
http://api.rubyonrails.org/classes/ActionController/Resources.html
1. 레일 스 기본 환경 에 루비 설치 (windows)
  • 다운로드 설치  1-Click Rails Installer
  • 다운로드 설치  E-TextEditor  ,설치 과정 에 오류 가 발생 할 수 있 으 니 누 르 고 지나 가면 됩 니 다.시작 할 때 cygwin 을 설치 하 시 겠 습 니까? 수 동 으로 설치 하지 마 십시오.
  • 시작 - > cmd - > cd \
  • rails my_event
  • cd my_event
  • ruby script/server
  • 브 라 우 저 열기  http://localhost:3000  ,레일 스 의 미리 설 정 된 홈 페이지
  • 를 볼 수 있 습 니 다.
    2. non - RESTful Hello World 를 만 듭 니 다!Rails Project
  • ruby script/generate controller welcome
  • 편집 / app / controllers / welcomecontroller. rb, 가입
    		def say
    		 render :text => "Hello world!"
    		end
    	
  • 탐색  http://localhost:3000/welcome/say, Hello world 를 볼 수 있 습 니 다!
  • 편집 / app / controllers / welcomecontroller. rb, 가입
    		def index
    		end
    	
  • 신규 / app / views / welcome / index. html. erb, 내용 은
    		<p>Hola!</p>
    		<p><%= link_to 'hello world', :controller => 'welcome', :action => 'say' %><p>
    	
  • 수정 / config / route. rb 에 map. root: controller = > "welcome"
  • 삭제 / 공개 / index. html
  • 탐색  http://localhost:3000/welcome/say, 홀 라 를 볼 수 있 습 니 다!hello 초연 결.

  • 3. non - RESTful CRUD 만 들 기
  • ruby script/generate model event name:string description:text
  • rake db:migrate
  • ruby script/generate controller events
  • 편집 / app / controllers / eventscontroller. rb 가입
      def index
        @events = Event.find(:all)
      end
    
      def show
        @event = Event.find(params[:id])
      end
      
      def new
        @event = Event.new
      end
      
      def create
        @event = Event.new(params[:event])
        @event.save
        
        redirect_to :action => :index
      end
      
      def edit
        @event = Event.find(params[:id])
      end
      
      def update
        @event = Event.find(params[:id])
        @event.update_attributes(params[:event])
        
        redirect_to :action => :show, :id => @event
      end
      
      def destroy
        @event = Event.find(params[:id])
        @event.destroy
        
        redirect_to :action => :index
      end
    		
  • 신규 / app / views / events / index. html. erb, 내용 은 다음 과 같다.
    <ul>
    <% @events.each do |event| %>
      <li>
        <%= link_to event.name, :controller => 'events', :action => 'show', :id => event %>
        <%= link_to 'edit', :controller => 'events', :action => 'edit', :id => event %>
        <%= link_to 'delete', :controller => 'events', :action => 'destroy', :id => event %>
      </li>
    <% end -%>
    </ul>
    <%= link_to 'new event', :controller => 'events', :action => 'new' %>
    	
  • 신규 / app / views / events / show. html. erb, 내용 은 다음 과 같다.
    <%=h @event.name %>
    <%=h @event.description %>
    
    <p><%= link_to 'back to index', :controller => 'events', :action => 'index' %></p>
    		
  • 신규 / app / views / events / new. html. erb, 내용 은 다음 과 같 습 니 다.
    <% form_for @event, :url => { :controller => 'events', :action => 'create' } do |f| %>
        <%= f.label :name, "Name" %>
        <%= f.text_field :name %>
        
        <%= f.label :description, "Description" %>
        <%= f.text_area :description %>
        
        <%= f.submit "Create" %>
    <% end %>
    		
  • 새로 추 가 된 / app / views / events / edit. html. erb 의 내용 은 다음 과 같다.
    <% form_for @event, :url => { :controller => 'events', :action => 'update', :id => @event } do |f| %>
        <%= f.label :name, "Name" %>
        <%= f.text_field :name %>
        
        <%= f.label :description, "Description" %>
        <%= f.text_area :description %>
        
        <%= f.submit "Update" %>
    <% end %>
    		
  •   http://localhost:3000/events

  • 4. RESTful 버 전의 CRUD 로 수정
    편집 / config / routes. rb, 가입
    map.resources :events
    	
    편집 / app / views / events / index. html. erb, 내용 은 다음 과 같 습 니 다.
     
     
      <% @events.each do |event| %> <li> <%= link_to event.name, event_path(event) %> <%= link_to 'edit', edit_event_path(event) %> <%= link_to 'delete', event_path(event), :method => :delete %> <% end -%> </ul> <%= link_to 'new event', new_event_path %>
  • 編輯 /app/views/events/show.html.erb,內容如下:
    <%=h @event.name %>
    <%=h @event.description %>
    
    <p><%= link_to 'back to index', events_path %>

     

  • 편집 / app / views / events / new. html. erb, 내용 은 다음 과 같 습 니 다.
    <% form_for @event, :url => events_path do |f| %>
        <%= f.label :name, "Name" %>
        <%= f.text_field :name %>
        
        <%= f.label :description, "Description" %>
        <%= f.text_area :description %>
        
        <%= f.submit "Create" %>
    <% end %>
    
    편집 / app / views / events / edit. html. erb, 내용 은 다음 과 같 습 니 다.
    <% form_for @event, :url => event_path(@event), :html => { :method => :put } do |f| %>
        <%= f.label :name, "Name" %>
        <%= f.text_field :name %>
        
        <%= f.label :description, "Description" %>
        <%= f.text_area :description %>
        
        <%= f.submit "Update" %>
    <% end %>
    
    5. RESTful 버 전의 Scaffold 사용 하기
  • ruby script/generate scaffold person name:string bio:text birthday:datetime
  • rake db:migrate
  • Ctrl + C 서버 를 닫 고 스 크 립 트 / 서버 를 다시 시작 합 니 다
  • 탐색  http://localhost:3000/people  CRUD 조작
  • 6. 아 약 스 연습 1 (HTML 업데이트 전송)
  • 새로 추 가 된 / app / views / layout / application. html. erb 의 내용 은 다음 과 같다
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
           "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
    <head>
      <meta http-equiv="content-type" content="text/html;charset=UTF-8" />
      <%= javascript_include_tag :defaults %>
    </head>
    <body>
    
    <%= yield  %>
    
    </body>
    </html>
    	
  • 편집 / app / views / welcome / index. html. erb, 가입
    	  
    <p><%= link_to_remote 'Ajax hello', :url => { :controller => 'welcome', :action => 'say' }, :update => 'foobar' %></p>
    
    
    <div id="foobar">
    </div>
    
  • 탐색 http://localhost:3000
  • 7. 아 약 스 연습 2 (RJS 사용)
  • 편집 / app / views / events / index. html. erb, 리 턴 중간 과 파일 마지막 가입
    <%= link_to_remote 'ajax show', :url => event_path(event), :method => :get %>
    
    	
    <div id="content">
    </div>
    	
  • 편집 / app / controllers / eventscontroller. rb, show action 에 가입
        respond_to do |format|
          format.html
          format.js
        end	
    	
  • 신규 / app / views / events /event. html. erb, 내용 은 show. html. erb 와 같 습 니 다
  • 신규 / app / views / events / show. js. rjs, 내용 은 다음 과 같다
    page.replace_html 'content', :partial =>'event'
    page.visual_effect :highlight, 'content'
    	
  • 탐색 http://localhost:3000/events
  • 8. 사용자 등록 제 너 레이 터 생 성기
  • 다운로드http://github.com/technoweenie/restful-authentication / vendor / plugins / 까지 restful - authentication
  • 루비 스 크 립 트 실행 / 인 증 된 사용자 세 션 생 성 -- old - passwords
  • rake db:migrate
  • Ctrl + C 서버 를 닫 고 스 크 립 트 / 서버 를 다시 시작 합 니 다
  •   http://localhost:3000/users/new  등록 페이지
  • 편집 / app / controllers / application. rb, 가입
    include AuthenticatedSystem  
    
  • 편집 / app / views / layout / application. html. erb, 가입
    <%= render :partial => "users/user_bar" %>
    
  • 편집 / app / controllers / eventscontroller. rb, 가입
    before_filter :login_required	
    
  • 점 선택 Log out, 재 접속  http://localhost:3000/events/  로그 인 페이지 로 안내
  • 9. 페이지 플러그 인
  • 다운로드http://github.com/mislav/will_paginate 부터 / vendor / plugins / 까지 willpaginate
  • 수정 / app / controllers / eventscontroller. rb 의 index action 은 다음 과 같다
    def index
     @events = Event.paginate(:page => params[:page], :per_page => 3, :order => "id DESC")
    end
    
  • 편집 / app / views / events / index. html. erb, 가입
    <%= will_paginate @events %>
    
  •   http://localhost:3000/events/
  • 좋은 웹페이지 즐겨찾기