它可以创建,但无法更新。
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
,因为可以创建。
答案 0 :(得分:0)
在更改main.rb代码后,我忘了再次运行此程序 代码没问题。