通过 simple_form 通过嵌套形式在模型中创建多个条目
Create multiple entries in model through nested form via simple_form
当用户创建职位空缺时,我希望他们能够保存 1 个日期范围或多个单独的日期。
所以我有 2 个模型,Vacancy
和 Vacancyschedule
。
Vacancyschedule 包括 vacancy_id start_date end_date start_hour end_hour (to save a range)
并且当它是多个单独的日期时,我只想将 end_date
留空并有多个条目并通过我的 vacancy_id
.[=18 将它们组合起来=]
这是我认为的代码:
... other code to ask for vacancy params, nothing special, nothing broken ...
#Code to create entry in vacancyschedule
<%= t.simple_fields_for :vacancyschedule do |p| %>
<%= p.input :start_date, :as => :date_picker, :label => false%>
<%= p.input :start_hour, as: :time, default: Time.parse('09:00')%>
<%= p.input :end_hour, as: :time, default: Time.parse('17:00')%>
<% end %>
然后我有一些 javascript 当用户想要添加第二个单独的日期时添加另一个完全相同的副本。
现在我的问题是:
它们传递的格式很奇怪。如您所见,我要求 :start_date、:start_hour 和 :end hour,这就是我得到的:
{"name"=>"", "street"=>"", "description"=>"", "skill_id"=>"",
"jobtype_id"=>"", "wage"=>"", "vacancyschedule"=>
{"start_date"=>"27/10/15", "end_date"=>"", "start_hour"=>"",
"end_hour"=>"", "start_hour(1i)"=>"2015", "start_hour(2i)"=>"10",
"start_hour(3i)"=>"26", "start_hour(4i)"=>"21",
"start_hour(5i)"=>"00", "end_hour(1i)"=>"2015", "end_hour(2i)"=>"10",
"end_hour(3i)"=>"26", "end_hour(4i)"=>"17", "end_hour(5i)"=>"00"},
"vacancyscheduele"=>{"start_date"=>"", "start_hour(1i)"=>"2015",
"start_hour(2i)"=>"10", "start_hour(3i)"=>"26", "start_hour(4i)"=>"09",
"start_hour(5i)"=>"00", "end_hour(1i)"=>"2015", "end_hour(2i)"=>"10",
"end_hour(3i)"=>"26", "end_hour(4i)"=>"17", "end_hour(5i)"=>"00"},
"tag_list"=>""}, "radio"=>"on", "commit"=>"Create Vacancy",
"controller"=>"vacancies", "action"=>"create", "employer_id"=>"2"}
据我所知,它们在非常不同的变量中传递并且不完整(并非所有日期都传递)。
有人遇到过这个问题吗?我将如何获取这些元素或如何防止它们以该格式被推送?
Eeeeehhh,我讨厌嵌套表格。当我不得不处理它们时,我总是回到基础。查看这些精美的 railscasts。我认为第二个更适合你的问题,但第一个有助于理解它:
http://railscasts.com/episodes/196-nested-model-form-part-1
http://railscasts.com/episodes/197-nested-model-form-part-2
归根结底,您需要知道 html 正在生成什么,并确保它是 Rails 在后端所期望的。此外,您必须在加载和保存时考虑嵌套对象。就 Rails 而言,您的 HTML 并没有生成可解析的对象。另一方面,很难处理 Rails 的废话 date/time 选择器。我通常喜欢放入一些可以生成更好的日期选择器的东西。一种生成一个字符串的方法,该字符串可以轻松映射到数据库字段。如果您使用 bootstrap,我会使用 bootstrap 日期选择器 gem。
当用户创建职位空缺时,我希望他们能够保存 1 个日期范围或多个单独的日期。
所以我有 2 个模型,Vacancy
和 Vacancyschedule
。
Vacancyschedule 包括 vacancy_id start_date end_date start_hour end_hour (to save a range)
并且当它是多个单独的日期时,我只想将 end_date
留空并有多个条目并通过我的 vacancy_id
.[=18 将它们组合起来=]
这是我认为的代码:
... other code to ask for vacancy params, nothing special, nothing broken ...
#Code to create entry in vacancyschedule
<%= t.simple_fields_for :vacancyschedule do |p| %>
<%= p.input :start_date, :as => :date_picker, :label => false%>
<%= p.input :start_hour, as: :time, default: Time.parse('09:00')%>
<%= p.input :end_hour, as: :time, default: Time.parse('17:00')%>
<% end %>
然后我有一些 javascript 当用户想要添加第二个单独的日期时添加另一个完全相同的副本。
现在我的问题是:
它们传递的格式很奇怪。如您所见,我要求 :start_date、:start_hour 和 :end hour,这就是我得到的:
{"name"=>"", "street"=>"", "description"=>"", "skill_id"=>"",
"jobtype_id"=>"", "wage"=>"", "vacancyschedule"=>
{"start_date"=>"27/10/15", "end_date"=>"", "start_hour"=>"",
"end_hour"=>"", "start_hour(1i)"=>"2015", "start_hour(2i)"=>"10",
"start_hour(3i)"=>"26", "start_hour(4i)"=>"21",
"start_hour(5i)"=>"00", "end_hour(1i)"=>"2015", "end_hour(2i)"=>"10",
"end_hour(3i)"=>"26", "end_hour(4i)"=>"17", "end_hour(5i)"=>"00"},
"vacancyscheduele"=>{"start_date"=>"", "start_hour(1i)"=>"2015",
"start_hour(2i)"=>"10", "start_hour(3i)"=>"26", "start_hour(4i)"=>"09",
"start_hour(5i)"=>"00", "end_hour(1i)"=>"2015", "end_hour(2i)"=>"10",
"end_hour(3i)"=>"26", "end_hour(4i)"=>"17", "end_hour(5i)"=>"00"},
"tag_list"=>""}, "radio"=>"on", "commit"=>"Create Vacancy",
"controller"=>"vacancies", "action"=>"create", "employer_id"=>"2"}
据我所知,它们在非常不同的变量中传递并且不完整(并非所有日期都传递)。
有人遇到过这个问题吗?我将如何获取这些元素或如何防止它们以该格式被推送?
Eeeeehhh,我讨厌嵌套表格。当我不得不处理它们时,我总是回到基础。查看这些精美的 railscasts。我认为第二个更适合你的问题,但第一个有助于理解它:
http://railscasts.com/episodes/196-nested-model-form-part-1
http://railscasts.com/episodes/197-nested-model-form-part-2
归根结底,您需要知道 html 正在生成什么,并确保它是 Rails 在后端所期望的。此外,您必须在加载和保存时考虑嵌套对象。就 Rails 而言,您的 HTML 并没有生成可解析的对象。另一方面,很难处理 Rails 的废话 date/time 选择器。我通常喜欢放入一些可以生成更好的日期选择器的东西。一种生成一个字符串的方法,该字符串可以轻松映射到数据库字段。如果您使用 bootstrap,我会使用 bootstrap 日期选择器 gem。