1

さて、IDを指定してレコードを更新する簡単なコードを書こうとしています。こんな感じです。

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

各フィールドを個別に更新できないのはなぜですか?何が起こっているのか混乱してすみませんか?

4

2 に答える 2

2

行末に不要なカンマがあるかもしれません。

それはただ読むべきです:

def updaterecord
    bathroom = Bathroom.find(params[:key])
    bathroom.name= params[:name]
    bathroom.street = params[:street]
    bathroom.save
end
于 2012-10-30T02:48:15.973 に答える
0

投稿値を正しくurlencodingしたようには見えません

シンプルな

puts params.inspect

また

pp params

paramsオブジェクトをログアウトする必要があります。使用することもできます

render :text => params.inspect

結果のhtmlに出力します

于 2012-10-30T02:50:58.650 に答える