【发布时间】:2015-07-21 18:33:33
【问题描述】:
我在使用 Rails 公式时遇到了一些问题。
我有一个创建“项目”的表单。
项目表格
<%= bootstrap_form_for(@project) do |f| %>
...
<div class="container-fluid">
<%= f.static_control label:"Vordefinierte Aufgaben" do %>
<div class="actions form-group nopadding">
<div class="center-block">
<%=link_to "", data: {toggle:"modal", target:".newTask-modal"} , class: "btn btn-success center-block btn-sidebar-ok", id: "singlebutton" do%>
<i> <span class="glyphicon glyphicon-plus pull-left btn-sidebar-icon"></span>Neue Aufgabe hinzufügen </i>
<% end %>
</div>
</div>
<div class="task-table">
<%=render 'tasks/table'%>
</div>
<% end %>
</div>
...
<!-- task Modal to create a new task -->
<%=render 'tasks/newTaskModal' %>
<% end %>
<!-- Button -->
<div class="actions form-group">
<div class="center-block">
<%= button_tag( type: 'submit', class: "btn btn-success center-block btn-sidebar-ok", id: "singlebutton") do%>
<i> <span class="glyphicon glyphicon-ok pull-left"></span>Projekt anlegen </i>
<% end %>
</div>
</div>
在此表单中,有一个显示已创建任务的表格和一个用于打开引导模式的按钮。此模式包含一个用于创建任务的新表单。
模态中的任务表单
<%= bootstrap_form_tag() do |f| %>
<div class="col-sm-8">
<%= f.text_field :task_title, label: "Titel", placeholder: "Betreff", icon: "pencil",wrapper: { class: 'icon-addon addon-md'} %>
</div>
<div class="col-sm-4">
<%= f.number_field :task_in_min, label: "Arbeitszeit in Min", placeholder: "Bsp.: 25", icon: "time", wrapper: { class: 'icon-addon addon-md'}%>
</div>
<div class="col-sm-12">
<%= f.text_area :task_description, label: "Beschreibung*", placeholder: "Aufgabenbeschreibung", icon: "pencil", rows: 10, wrapper: { class: 'icon-addon addon-md'}%>
</div>
<%= button_tag( type: 'button', id:"taskSubmit", class: "btn btn-success center-block btn-sidebar-ok") do %>
<i > <span class="glyphicon glyphicon-ok pull-left btn-sidebar-icon"></span> Speichern </i>
<% end %>
<% end %>
如果我单击“taskSubmit”,则将这个任务(标题、描述、最小值)放入项目表单中的表格中。 JS用任务内容新建表格行。
Javascript
//take data from task form and at a new task element to the task table in project form
$(function TaskSubmitFunction(){
$('#taskSubmit').click(function(){
var task_title = $('#task_title').val();
var task_description = $('#task_description').val();
var task_in_min = $('#task_in_min').val();
//Remove spaces from title
var id = task_title.replace(/ /g,'');
$('#taskTable tr:last').after('<tr id="task_'+id+'"> <td>'+task_title+'</td> <td>'+task_description+'</td><td>'+task_in_min+'</td><td> <span class="pull-right"><span data-toggle="tooltip" data-placement="right" data-original-title="Löschen"><button class="btn btn-sm btn-danger btn-colored delete-position" id="'+id+'"name="button" type="button" task="'+task_title+'"><i><span class="glyphicon glyphicon-remove"/></i></button></span></span></td></tr>');
$('#taskTable').after('<input type="hidden" id="1" name="1" value="'+task_title+'" />');
$('#task_title').val('');
$('#task_description').val('');
$('#task_in_min').val('');
//initialize task delete
$(function TaskDeleteFunction(){
$('#'+id).click(function(){
var task_title = $(this).attr('task');
if (confirm("Soll die Aufgabe wirklich gelöscht werden?")) {
$('#'+id).remove();
}
return false;
});
});
});
});
我现在要做的就是将这些表格元素提交给项目控制器来创建项目和所有必要的任务activeRecords。这可能吗? 我怎样才能做到这一点?也许为每个将提交到项目表单的表格元素创建一个隐藏字段?但是每个表格元素都包含三个值......我该怎么做?
你有什么想法吗?
最好的问候
【问题讨论】:
-
您似乎走在了正确的轨道上,尽管我似乎找不到您的主表单的提交按钮。假设它在那里,当您提交表单时,
params中是否没有显示任务? -
我添加了提交按钮代码。但是如何为任务(由 3 个值组成)创建隐藏字段,以便将其提交给项目控制器?
-
只需使用 Rails
hidden_field_tag助手(记录在 here)。 -
Thx 但我的问题是如何在一个 hidden_field_tag 上提交 3 个值?是否可以创建一个数组并将其放入隐藏字段? :) 你知道吗?
-
我想这可能是可能的,但为什么不只使用三个隐藏字段(每个值一个)?直截了当,它们将很容易在 params 哈希中访问。
标签: javascript html ruby-on-rails ruby forms