2015-07-16 3 views
0

Он может создавать, но не может обновляться.
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 

messgage Ошибка,

Mongoid :: Errors :: UnknownAttribute at/update/55a6781373696454b5000000 Проблема: Попытка установить значение для 'longtitude', которое недопустимо для модели Organization. Реферат: Без включения Mongoid :: Attributes :: Dynamic в вашей модели и атрибут еще не существует в хэшах атрибутов, пытаясь вызвать Organization # longtitude =, потому что это недопустимо. Это также инициируется передачей атрибута любому методу, который принимает хэш атрибутов, и создается вместо получения NoMethodError. Разрешение. Вы можете включить Mongoid :: Attributes :: Dynamic, если вы часто будете писать значения для неопределенных полей. файл: processing.rb местоположение: process_attribute линия: 96

Я думаю, нет необходимости включать Mongoid::Attributes::Dynamic, потому что может создать.

+0

Извините, что на самом деле не очень много на использовании тонких, но не должны ли эти поля быть «организацией [местоположение]»? Так вы обычно обрабатываете массив в стандартном сообщении формы. –

+0

Спасибо @BlakesSeven, да может обрабатывать его как массив, но я хотел бы разделить форму ввода. кстати, когда я снова запускаю эту программу, ошибок нет. извините за это. – tknv

ответ

0

Только что я забыл снова запустить этот прогрм после изменения main.rb-кода.
Код в порядке.

Смежные вопросы