2010-04-03 6 views
14

Tôi đang cố gắng tạo API cho ứng dụng đường ray của mình bằng cách sử dụng phản hồi JSON cho bộ điều khiển tài nguyên RESTful. Đây là một trải nghiệm mới cho tôi, vì vậy tôi đang tìm một số hướng dẫn và gợi ý. Để bắt đầu mọi thứ:Rails 3: Cách thích hợp để đáp ứng với hành động REST-ful với JSON trong đường ray là gì?

  1. Trong ứng dụng đường ray, cách "thích hợp" để trả lời bằng phương pháp điều khiển JSON sang REST-ful là gì? (tạo, cập nhật, hủy)
  2. Có cách nào thành ngữ để biểu thị thành công/thất bại thông qua phản hồi JSON không?

thông tin bổ sung:

  • Tôi hiện đang làm việc với đường ray 3.0.beta2
  • Tôi muốn tránh sử dụng một plugin hoặc đá quý để làm công việc grunt, tôi mục tiêu là để hiểu rõ hơn về cách tạo một API 3 đường ray.
  • Liên kết đến những nơi tôi có thể tìm thêm thông tin về chủ đề cũng sẽ được đánh giá cao, một số tìm kiếm nhanh trên google đã không làm tôi tốt.
+0

Bạn có tìm ra phần này: "Có cách nào thành công để biểu thị thành công/thất bại thông qua phản hồi JSON không?" –

+0

Gần đây tôi chưa làm việc với ray, nhưng từ những gì tôi đã thấy trong các dự án khác, một cờ boolean trong đối tượng JSON trả về có vẻ là cách đơn giản nhất để đánh giá thành công/thất bại của một cuộc gọi JSON. –

Trả lời

29
#config/routes.rb 
MyApplicationsName::Application.routes.draw do 
    resources :articles 
end 

#app/controllers/articles_controller.rb 
class ArticlesController < ActionController::Base 

    # so that respond_with knows which formats are 
    # allowed in each of the individual actions 
    respond_to :json 

    def index 
    @articles = Article.all 
    respond_with @articles 
    end 

    def show 
    @article = Article.find(params[:id]) 
    respond_with @article 
    end 

    ... 

    def update 
    @article = Article.find(params[:id]) 
    @article.update_attributes(params[:article]) 

    # respond_with will automatically check @article.valid? 
    # and respond appropriately ... @article.valid? will 
    # be set based on whether @article.update_attributes 
    # succeeded past all the validations 
    # if @article.valid? then respond_with will redirect to 
    # to the show page; if [email protected]? then respond_with 
    # will show the :edit view, including @article.errors 
    respond_with @article 
    end 

    ... 

end 
+0

Chính xác những gì tôi đang tìm kiếm, cảm ơn. Tôi nhớ nhìn thấy 'respond_with' trong tài liệu đường ray, nhưng vì lý do nào đó nó không được kích. Điều này đã giúp rất nhiều, cảm ơn! –

+0

Điều này có nghĩa là chúng tôi _need_ phải làm '<% nếu @ article.valid? %> 'logic trong các khung nhìn? – dazonic

+0

Bạn cần logic trong chế độ xem để kiểm tra xem có hiển thị lỗi hay không. Nhưng tôi đã cập nhật câu trả lời của mình với nhiều thông tin hơn. – yfeldblum