Как получить доступ к вложенному детскому элементу в fields_for

Я пытаюсь получить доступ к Мешанине тип mongoid в fieds_for , и я уже имею отношения с моделью и хочу получить доступ к мешанине той модели. Что-то как:

class Leave
  field :leaves_types, :type => Hash
end

class User
  has_many :leaves
end

Хочу сделать что-то как:

form_for @user do |f|
  f.fields_for :leaves.leave_types...

Как я могу достигнуть этого? Заранее спасибо.

0
nl ja de
Эй!Thank you very much. На самом деле, в первый раз I' m задающий вопроса здесь и спрашивать представление вопроса довольно недоступно для программ экранного доступа так, некоторые, как умеют задать вопрос и забыл форматировать.
добавлено автор Nits, источник

1 ответы

Необходимо дать блок , чтобы fields_for . Для получения дополнительной информации о том методе посмотрите докторов. В вашем случае, во-первых, добавляет эта линия к вашему Пользователь модель:

class User
  has_many :leaves
  accepts_nested_attributes_for :leaves
end

Это требуется так, чтобы, когда ваша форма отправлена, признаки, прибывающие из областей формы для листьев с помощью params , были обработаны правильно.

Теперь ваш шаблон должен быть похожим на это (для простоты к настоящему времени, я предполагаю, что ваш у Отпуска также есть простая текстовая названная область foo ):

<%= form_for @user do |f| %>
  ...
  <%= f.fields_for :leaves do |leave_fields| %>
    # Fields for a leave here ----v
    Foo: <%= leaves_fields.text_field :foo %>
  <% end %>
<% end %>

Или, если вы @user.leaves уже инициализированный и вы хотите, чтобы конструктор форм поместил свои ценности, чтобы сформировать области, необходимо повторить по @user.leaves , передав каждый из них, чтобы fields_for как второй аргумент:

<%= form_for @user do |f| %>
  ...
  <% @user.leaves.each do |leave| %>
    <%= f.fields_for :leaves, leave do |leave_fields| %>
      # Note the addition here --^
      Foo: <%= leave_fields.text_field :foo %>
    <% end %>
  <% end %>
<% end %>

But your question has another one inside: you have not a text field, but a hash, and there is no default form input for it (i.e. there is no f.hash_field :leaves_types). So you may want to make it by yourself like suggested in these questions: [1], [2] and [3].

Так или иначе наличие области Мешанины кажется довольно необычным мне, поэтому возможно, Мешанина может быть так или иначе заменена, скажем, с другим has_many ассоциация (не уверенный), и в этом случае вам только будет нужен другой вложенный fields_for .

0
добавлено
Действительно, в этом случае можно избежать Мешанину , добавляя новый образцовый класс LeaveType с областями id , leave_id и стоимость , и добавляют has_many: leave_types , чтобы Отпуск . В этом случае leave_types возвратит множество, для которого можно повторять обычно и снова использовать fields_for . Если это все еще doesn' t соответствуют вам хорошо, that' s, возможно, потому что я don' t полностью понимают, какой "отпуск" и "тип отпуска" на самом деле означает в вашей бизнес-логике.
добавлено автор NIA, источник
Привет NIA, спасибо за ответ. Я думаю, что должен управлять им от диспетчера это сам после представления формы. Причина, я хочу сохранить ценности в мешанине как, leaveType id и его стоимость.
добавлено автор Nits, источник
DBA - русскоговорящее сообщество
DBA - русскоговорящее сообщество
1 345 участник(ов)

Общаемся и обсуждаем темы, посвященные DBA, PostgreSQL, Redis, MongoDB, MySQL, neo4j, riak и т.д. См. также: @devops_ru, @kubernetes_ru, @docker_ru, @nodejs_ru Рекомендуем сразу отключить уведомления, чтобы пребывание здесь было полезным и комфортным.

pro.ruby
pro.ruby
1 181 участник(ов)

Язык программирования Ruby Additional docs: https://rubyreferences.github.io/rubyref/ Invite: https://telegram.me/joinchat/Be4rsT2NuB3CyJaF26j1kA Кто хочет компилировать: @crystal_ru (его синтаксис основан на Ruby) Участник @proDOT

Ruby, Rails, Hanami | dry-rb
Ruby, Rails, Hanami | dry-rb
1 180 участник(ов)

https://telegram.me/rubyjob - Ruby Job По вопросам - @eugene_shved

MongoDB Russian
MongoDB Russian
1 086 участник(ов)

> db.stats() https://combot.org/chat/-1001035023078

Ruby School .us
Ruby School .us
1 045 участник(ов)

Чат-болталка для учеников руби-школы и не только. Правила: https://telegra.ph/Pravila-chata-Rubi-shkoly-03-13

Random Ruby Chat
Random Ruby Chat
589 участник(ов)

Правила публикации вакансий: https://t.me/codenamecrud/60865

Rubyata
Rubyata
333 участник(ов)

Коммюнити Ruby и Ruby On Rails Флуд не приветствуются. Вакансии можно публиковать только и ТОЛЬКО по пятницам с хештегом #вакансия.

Ruby Talks
Ruby Talks
236 участник(ов)

Национальная Флеймотека

RubyRush
RubyRush
189 участник(ов)

rubyrush.ru программирование для самых новичков

Rails Chat
Rails Chat
87 участник(ов)

You are welcome to discuss Ruby On Rails development process and other stuff