【发布时间】:2012-11-01 09:13:24
【问题描述】:
我是 Rails 新手(来自 PHP),并且在使用 ajax 提交表单时遇到问题。基本上,我有一个任务列表,当添加新任务时,我希望将新任务附加到列表中。表单本身正在提交,但我不知道如何附加新条目。提前致谢!
表格
<%= simple_form_for(Task.new) do |f| %>
<%= f.error_notification %>
<div class="form-inputs">
<%= f.input :name %>
<%= f.input :date_due %>
<%= f.input :phase_id, :as => :hidden, :input_html => { :value => @phase.id } %>
<%= f.input :status, :as => :hidden, :input_html => { :value => "0" } %>
</div>
<div class="form-actions">
<%= f.button :submit %>
</div>
<% end %>
JS
$('form#new_task').submit(function() {
var valuesToSubmit = $(this).serialize();
$.ajax({
type: "POST",
url: $(this).attr('action'), //sumbits it to the given url of the form
data: valuesToSubmit,
dataType: "JSON"
}).success(function(data){
// disaply new charge in the table
$('body').append(data);
// clear the form
$("input#task_name").val('');
//focus on the input again
$("input#task_name").focus();
});
return false; // prevents normal behaviour
});
编辑 还值得一提的是,这发生在“阶段”的视图中。每个阶段都有_许多任务,每个任务都属于_一个阶段。
【问题讨论】:
-
所以表单正在提交意味着您正在进入控制器/操作,对吗?如果是这样,您可以通过执行
puts params来检查传入的参数是什么意思?如何附加到新条目? -
我想我理解你想在对象列表中添加一个“新行”来显示创建的新对象,对吗?如果是,请考虑
table或您要在其中呈现对象列表的任何内容发布视图部分。
标签: jquery ruby-on-rails ruby ajax append