Проблема с Railscast# 238, date_select не работает с рельсами 4.
Я пробую Railscast#238. Я использую рельсы 4 и mongoid(4.0.0). При попытке добавить поле publ_on с помощником date_select. Не удается сохранить в коллекцию. Затем я добавил: publ_on в функцию разрешения. Но тогда я тоже получаю ошибку. Я также попытался включить Mongoid::MultiParameterAttributes, но он не найден. Я думаю, что его убрали из монгоида. Ниже приведена ошибка в файле журнала:
Журнальный файл
Обработка ArticlesController#update как HTML Параметры: {"utf8"=>"✓", "authenticity_token"=>"3+y5UUckEDqJRPwdibdlhwAxKHi1g2ECF/4SzFNVbJE=", "article"=>{"name"=>"sachin", "Опубликовал (1i)"=>"2013", " Опубликовал_on(2i)"=>"4", " Опубликовал_on(3i)"=>"10", " содержание "=>"s'up?"}, " Совершить " => "Обновить статью", "id"=>"522f4ce6f0b1817131000001"} MOPED: 127.0.0.1:27017 База данных QUERY = коллекция mongs_development = статьи selector={"_id"=>"522f4ce6f0b1817131000001"} flags=[:slave_ok] limit=0 пропустить =0 batch_size= ноль полей = ноль (0,5178 мс) Выполнено 500 Внутренняя ошибка сервера в 3 мс
Mongoid::Errors::UnknownAttribute (Проблема: Попытка установить значение для "ключ-публикации (1i)", которое недопустимо в статье модели. Резюме: Без включения Mongoid::Attributes::Dynamic в вашу модель, а атрибут не уже существует в хэше атрибутов, попытка вызвать Article # ключ_публикации (1i) = для него недопустима.Это также инициируется передачей атрибута любому методу, который принимает хэш атрибутов, и вызывается вместо получения ошибки NoMethodError.: Вы можете включить Mongoid::Attributes::Dynamic, если ожидаете частой записи значений для неопределенных полей.): App/controllers/articles_controller.rb:44:in
block in update' app/controllers/articles_controller.rb:43:in
Обновить'
Если я удалю опубликованный_он из разрешения:
arameters: {"utf8"=>"✓", "authenticity_token"=>"3+y5UUckEDqJRPwdibdlhwAxKHi1g2ECF/4SzFNVbJE=", "article"=>{"name"=>"sachin", "updated_on(1i)"=> 2013", "publ_on(2i)"=>"9", "publ_on(3i)"=>"10", "content"=>"s'up?"}, " Commit"=>" Обновить статью ", "id"=>"522f4ce6f0b1817131000001"} MOPED: 127.0.0.1:27017 База данных COMMAND = команда администратора ={:ismaster=>1} (0.6187ms) MOPED: 127.0.0.1:27017 База данных QUERY = коллекция mongs_development = выбор статей ={"_id"=>"522f4ce6f0b1817131000001"} flags=[:slave_ok] limit=0 skip=0 batch_size=nil fields=nil (0.2012ms) Недопустимые параметры: publ_on(1i), publ_on(2i), publ_on (3i) Перенаправлено на
http://localhost:3000/articles/522f4ce6f0b1817131000001
Выполнено 302 найдено за 5мс
Запущен GET "/article /522f4ce6f0b1817131000001" для 127.0.0.1 в 2013-09-10 23:19:34 +0530 Обработка ArticlesController#show в виде параметров HTML: {"id"=>"522f4ce6f0b1817131000001"} MOPED: 127.0.0.1:27017 База данных QUERY = коллекция mongs_development = селектор статей ={"_id"=>"522f4ce6f0b1817131000001"} flags=[:slave_ok] limit=0 skip=0 batch_size=nil fields=nil (0.3569ms) Отображаемые статьи /show.html.erb в макетах / приложении (0,6 мс) Выполнено 200 ОК за 9 мс (просмотров: 7,4 мс)
Может кто-нибудь дать решение для этого?
2 ответа
Вы должны включить Mongoid::MultiParameterAttributes
в вашем классе документов.
В Mongoid 4.0 вам также нужно определить этот модуль в течение года. lib/
папка. Смотрите подробное объяснение в этом блоге
Могу поспорить, что у вас есть функция
def article_params params.require(:article).permit!(:publ_on) конец
Но вам также нужно...
Article.create(article_params)
НЕ
Article.create(params[:article])
Надеюсь это поможет,
-Брайан