Задать вопрос
@ermolushka

Как работать с массивом словарей в mongoid?

В базе (коллекция users) записи хранятся в следующем виде:
"_id" : ObjectId("some id"),
	"admin" : "Name",
	"items" : [
		{
			"name" : "some name,
			"img" : "some url",
			"price" : 3000,
			"cat" : "category name",
			"active" : "1",
			"id" : 1,
			"desc" : "description"
		},


#_form.html.erb
<%= form_for(@bot) do |f| %>
  <div class="container">
    <div class="form-group">
      <%= f.label "Условия доставки" %><br>
      <%= f.text_area :delivery_info, class: "form-control"  %>
    </div>
    <div class="form-group">
      <%= f.label "Email" %><br>
      <%= f.text_field :email, class: "form-control"  %>
    </div>
    <div class="form-group">
      <%= f.label "Контактная информация" %><br>
      <%= f.text_area :contacts_info, class: "form-control"  %>
    </div>
    
    <div class="field">
      <%= @bot.items.each do |item| %>
        <%= f.fields_for item do |i| %>
      <div class="field">
        <%= i.label :name %><br />
        <%= i.text_field :name %>
      </div
        <% end %>
      <% end %>
    </div>
    <div class="actions">
      <%= f.submit "Сохранить", class: 'btn btn-success'%>
    </div>
  </div>
<% end %>


#item.rb
class Item
  include Mongoid::Document
  embedded_in :bot
  field :name, type: String
  field :price, type: Integer
  field :cat, type: String
  field :desc, type: String
  field :img, type: String
end


#bot.rb
require 'digest/md5'
class Bot
  include Mongoid::Document
  store_in collection: 'bots'
  embeds_many :items
  field :admin, type: String
  field :delivery_info, type: String
  field :email, type: String
  field :contacts_info, type: String
  field :link, type: String
  field :token, type: String
end

Нет проблем с выводом списка items у конкретного user, но непонятно, как редактировать item.
UPD: когда пытаюсь обновить значение name у item, получаю сообщение

Processing by BotsController#update as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"тут токен==", "bot"=>{"delivery_info"=>"Самовывз", "email"=>"тут email", "contacts_info"=>"telegram", "item"=>{"name"=>"Пальто"}}, "commit"=>"Сохранить", "id"=>"5790edbe3993951addde4b23"}
Unpermitted parameter: item

То есть он пытается поменять атрибут item, а у объекта модели Bot только атрибут items. Непонятно, как исправить.
  • Вопрос задан
  • 172 просмотра
Подписаться 1 Оценить Комментировать
Решения вопроса 1
@ermolushka Автор вопроса
Решил через добавление дополнительных параметров в контроллер.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы