Невозможно создать REST API для моего приложения RoR - PullRequest
1 голос
/ 25 января 2012

Я пытаюсь создать REST API для моего приложения.

map.connect_resource :book вызывает следующую ошибку при выполнении rake test:functionals:

Error: undefined local variable or method `map' for # 
<ActionDispatch::Routing::Mapper:0x8a11e74>.

В моем приложении я пытаюсь реализовать RoR с MySQL со следующими данными таблицы.

Table Name: Object  
Fields: object_id, Object_name, Object_description etc...

Я хотел бы создать объект REST API для запроса вышеуказанной базы данных и получения данных. Какой лучший способ продолжить?

1 Ответ

2 голосов
/ 25 января 2012

Это действительно старый урок ( от 6 лет назад !!! ).Вместо этого я бы рекомендовал прочитать это руководство: http://guides.rubyonrails.org/routing.html

Предполагая, что вы работаете с Rails 3, вам просто нужно поместить это в ваш файл routes.rb:

resources :books

Это будетвыставить маршруты для вашего BooksController, чтобы вы могли получить доступ к:

HTTP Verb   Path              action      used for
-----------------------------------------------------------------------
GET         /books            index       display a list of all books
GET         /books/new        new         return an HTML form for creating a new book
POST        /books            create      create a new book
GET         /books/:id        show        display a specific book
GET         /books/:id/edit   edit        return an HTML form for editing a book
PUT         /books/:id        update      update a specific book
DELETE      /books/:id        destroy     delete a specific book

Таким образом, в вашем BooksController вы бы получили:

class BooksController < ApplicationController
  # GET /books
  # GET /books.xml
  def index
    @books = Book.all

    respond_to do |format|
      format.html # index.html.erb
      format.xml  { render :xml => @books }
    end
  end

  # GET /books/1
  # GET /books/1.xml
  def show
    @book = Book.find(params[:id])

    respond_to do |format|
      format.html # show.html.erb
      format.xml  { render :xml => @book }
    end
  end

  # GET /books/new
  # GET /books/new.xml
  def new
    @book = Book.new

    respond_to do |format|
      format.html # new.html.erb
      format.xml  { render :xml => @book }
    end
  end

  # GET /books/1/edit
  def edit
    @book = Book.find(params[:id])
  end

  # POST /books
  # POST /books.xml
  def create
    @book = Book.new(params[:book])

    respond_to do |format|
      if @book.save
        format.html { redirect_to(@book, :notice => 'Book was successfully created.') }
        format.xml  { render :xml => @book, :status => :created, :location => @book }
      else
        format.html { render :action => "new" }
        format.xml  { render :xml => @book.errors, :status => :unprocessable_entity }
      end
    end
  end

  # PUT /books/1
  # PUT /books/1.xml
  def update
    @book = Book.find(params[:id])

    respond_to do |format|
      if @book.update_attributes(params[:book])
        format.html { redirect_to(@book, :notice => 'Book was successfully updated.') }
        format.xml  { head :ok }
      else
        format.html { render :action => "edit" }
        format.xml  { render :xml => @book.errors, :status => :unprocessable_entity }
      end
    end
  end

  # DELETE /books/1
  # DELETE /books/1.xml
  def destroy
    @book = Book.find(params[:id])
    @book.destroy

    respond_to do |format|
      format.html { redirect_to(books_url) }
      format.xml  { head :ok }
    end
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...