Re: [問題] 送出REST的CRUD 但是結果有問題
版大提到了Controller
不知道這樣對不對,不是script/generate scaffold doctor ....
之後就有樣板,沒有提供rest功能?
小弟自己有小改一下
裝了json的rubygem 之後有成功輸出json格式的檔案
class DoctorsController < ApplicationController
# GET /doctors
# GET /doctors.xml
def index
@doctors = Doctor.all
respond_to do |format|
format.html # index.html.erb
format.xml { render :xml => @doctors }
format.json { render :json =>@doctors }
end
end
# GET /doctors/1
# GET /doctors/1.xml
def show
@doctor = Doctor.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.xml { render :xml => @doctor }
format.json { render :json=> @doctor }
end
end
# GET /doctors/new
# GET /doctors/new.xml
def new
@doctor = Doctor.new
respond_to do |format|
format.html # new.html.erb
format.xml { render :xml => @doctor }
format.json { render :json=> @doctor }
end
end
# GET /doctors/1/edit
def edit
@doctor = Doctor.find(params[:id])
end
# POST /doctors
# POST /doctors.xml
def create
@doctor = Doctor.new(params[:doctor])
respond_to do |format|
if @doctor.save
flash[:notice] = 'Doctor was successfully created.'
format.html { redirect_to(@doctor) }
format.xml { render :xml => @doctor, :status => :created, :location => @doctor }
format.json { render :json=> @doctor, :status => :created, :location => @doctor }
else
format.html { render :action => "new" }
format.xml { render :xml => @doctor.errors, :status => :unprocessable_entity }
format.json { render :json => @doctor.errors, :status => :unprocessable_entity }
end
end
end
# PUT /doctors/1
# PUT /doctors/1.xml
def update
@doctor = Doctor.find(params[:id])
respond_to do |format|
if @doctor.update_attributes(params[:doctor])
flash[:notice] = 'Doctor was successfully updated.'
format.html { redirect_to(@doctor) }
format.xml { head :ok }
format.json { head :ok }
else
format.html { render :action => "edit" }
format.xml { render :xml => @doctor.errors, :status => :unprocessable_entity }
format.json { render :json => @doctor.errors, :status => :unprocessable_entity}
end
end
end
# DELETE /doctors/1
# DELETE /doctors/1.xml
def destroy
@doctor = Doctor.find(params[:id])
@doctor.destroy
respond_to do |format|
format.html { redirect_to(doctors_url) }
format.xml { head :ok }
format.json { head :ok }
end
end
end
※ 引述《Esh ()》之銘言:
: 首先感謝大家之前對小弟之前在REST疑問的排除
: 現在遇到了一個狀況
: 就是對規定的URI送出PUT, GET, POST, DELETE
: 只有GET跟DELETE的結果正確...
: (用了幾個REST GUI Client都這樣)
: 例如有一個doctors的controller
: 裡面有Uid, Firstname, Lastname, City, 與License五個Fields
: 小弟我有修改migrate的內容,把timestamp去掉
: 現在除了上面5個欄位,只有多了會自動產生的ID
: 先用Scaffold產生的new樣板,網頁輸入一筆資料後
: 對doctors/1.xml 送出Get Method得到了
: <?xml version="1.0" encoding="UTF-8"?>
: <doctor>
: <city>CA</city>
: <firstname>Peter</firstname>
: <id type="integer">1</id>
: <lastname>Norton</lastname>
: <license type="integer">2147483647</license>
: <uid>A128080042</uid>
: </doctor>
: 接著我想要修改資料,例如把uid改成 A128080142
: 於是再對doctors/1.xml 送出PUT
: 以下是封包內容
: <?xml version="1.0" encoding="UTF-8"?>
: <doctor>
: <city>CA</city>
: <firstname>Peter</firstname>
: <id type="integer">1</id>
: <lastname>Norton</lastname>
: <license type="integer">2147483647</license>
: <uid>A128080142</uid>
: </doctor>
: 送出之後,得到200 OK的回應
: 但是再用GET去看這筆資料
: 得到的還是變動前的UID
: 另外,要新增一筆資料
: 對doctors.xml送出POST
: 一樣編輯上述的xml內容
: 一樣得到200 ok的回應,也真的多了一筆資料在Database
: 可是僅有自動生成的ID欄位多了自動加1的數值
: 該record的其他欄位city, firstname. lastname.....
: 都是null的
: 不知道為什麼會發生這樣的狀況?
: 該如何解決? 我送出的方式有誤嘛?
: 或者是REST Client的問題 (我用python的RESTClient http://restclient.org/ )
: 有請高手解惑了!
: 謝謝
--
http://blog.leezhenyu.com
Technology, Study, Food, Travel
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.137.254.39
→
05/27 17:12, , 1F
05/27 17:12, 1F
→
05/27 17:12, , 2F
05/27 17:12, 2F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
Ruby 近期熱門文章
PTT數位生活區 即時熱門文章