能够创建,但无法更新

时间:2015-07-16 04:41:52

标签: ruby mongoid

它可以创建,但无法更新。
main.rb

post '/create' do
  o = Organization.new(
  title: params[:organization][:title],
  body: params[:organization][:body],
  location: [params[:organization][:longtitude], params[:organization][:latitude]]
   )
  if o.save
    redirect '/'
  else
    flash[:error] = "Error saving a organization document."
  end
end

get '/edit/:id' do |id|
  @o = Organization.find(id)
  slim :edit
end

put '/update/:id' do
  @o = Organization.find(params[:id])
  @o.update_attributes(title: params[:organization][:title],
  body: params[:organization][:body],
  location: [params[:organization][:longtitude], params[:organization] [:latitude]])
  slim :show
end    

edit.slim

h2 Edit

form#organizationForm action="/update/#{@o.id}" method="POST"
  input type="hidden" name="_method" value="PUT"
  |title
  input type="text" name="organization[title]" value="#{@o.title}"
  |body
  input type="text" name="organization[body]" value="#{@o.body}"
  |longtitude
  input type="text" name="organization[longtitude]" value="#{@o.location[0]}"
  |latitude
  input type="text" name="organization[latitude]" value="#{@o.location[1]}"
  input type="submit" name="submit" value="Update"   

organization.rb

class Organization
  include Mongoid::Document
  include Mongoid::Geospatial
  field :title,    type: String
  field :body,     type: String

  # define fields
  field :location, type: Point, spatial: true
  field :route,    type: LineString
  field :area,     type: Polygon
  field :around,   type: Circle
end   

错误混乱,

  

Mongoid :: Errors :: UnknownAttribute at / update / 55a6781373696454b5000000   问题:尝试设置模型组织上不允许的“longtitude”值。简介:在模型中没有包含Mongoid :: Attributes :: Dynamic且属性哈希中不存在属性,因此不允许尝试调用Organization#longtitude =。这也是通过将属性传递给任何接受属性哈希的方法来触发的,并且被引发而不是获取NoMethodError。解决方案:如果您希望经常为未定义的字段写入值,则可以包含Mongoid :: Attributes :: Dynamic。   file:processing.rb location:process_attribute line:96

我认为不需要包含Mongoid::Attributes::Dynamic,因为可以创建。

1 个答案:

答案 0 :(得分:0)

在更改main.rb代码后,我忘了再次运行此程序 代码没问题。