2012-10-30 67 views
1

好吧,我只是想寫一些簡單的代碼來更新給定ID的記錄。這就是它的樣子。Ruby on Rails:更新數據問題

def updaterecord 
    bathroom = Bathroom.find(params[:key]) 
    bathroom.name= params[:name], 
    #bathroom.bathroomtype = params[:bathroomtype], 
    bathroom.street = params[:street] 
    #bathroom.city = params[:city], 
    #bathroom.state = params[:state], 
    #bathroom.country = params[:country], 
    #bathroom.postal = params[:postal], 
    #bathroom.access = params[:access], 
    #bathroom.directions = params[:directions], 
    #bathroom.comment = params[:commment], 
    #bathroom.avail = params[:avail] 
    bathroom.save 
    end 

問題是,雖然我試圖更新每個單獨的屬性,他們都被連接到名稱字段。例如,上面的代碼將名稱字段設置爲名稱加上地址。我不知道爲什麼?

如果我在更新後嘗試查詢,則這是控制檯的外觀。

Bathroom Load (0.2ms) SELECT "bathrooms".* FROM "bathrooms" WHERE "bathrooms"."ID" = ? LIMIT 1 [["ID", 4017]] 
=> #<Bathroom ID: 4017, name: "--- \n- ttyt\n- 113 some\n", bathroomtype: "0", street: "113 some", city: "Portland", state: "OR", country: "United States", postal: "97217", lat: #<BigDecimal:1109f2890,'0.4558056E2',12(12)>, lon: #<BigDecimal:1109f27c8,'-0.122677857E3',12(16)>, access: "0", directions: "", comment: nil, created: "2012-06-08 17:19:03.420329", modifed: "", avail: "1", slug: "", source: "Squat"> 

而這正是後值的樣子:

post values = key=4017&name=www&bathroomtype=0&street=7540 N Interstate Ave&city=Portland&state=OR&country=United States&postal=97217&access=0&directions=&comment=<null>&avail=1 

爲什麼我不能讓每個字段逐個更新?對不起,我對發生了什麼感到困惑?

+0

有沒有你不想要使用或的update_attributes一個update_column特別的原因?儘可能多的(給定註釋部分的代碼)或少數(未註釋的部分),使用其中一種方法可能會更清晰。看看這篇文章:http://stackoverflow.com/questions/2778522/rails-update-attribute-vs-update-attributes請注意,update_attribute(單數)被棄用,贊成update_column。 – jflores

回答

2

我想你可能會在行尾有一個不必要的逗號。

它應該只是閱讀:

def updaterecord 
    bathroom = Bathroom.find(params[:key]) 
    bathroom.name= params[:name] 
    bathroom.street = params[:street] 
    bathroom.save 
end 
0

它看起來並不像你已經正確了urlencoded你的帖子值

簡單

puts params.inspect 

pp params 

應該註銷標準桿ams對象。您還可以使用

render :text => params.inspect 

打印出來給你的結果HTML