我正在寻找最 Rails-y 的方式来创建一个显示数据元素的表,这样当用户单击任何行时,该行就变得可编辑。到目前为止我所得到的:
表格中的每一行都由部分呈现
我将 jQuery 事件处理程序绑定(bind)到行上的单击事件,该事件使用 jQuery.load 将编辑部分的 HTML 加载到行中
使用以下代码,这几乎可以工作:
任务.js
$(document).ready(function() {
$('.task_row').click( function() {
var id = $(this).attr('id');
$('#' + id).load('/tasks/' + id + '/edit');
//$(this).unbind('click');
});
});
_edit_row.html.erb
<%= form_for(task, :remote => true) do |f| %>
<td>
<%= f.text_field :title %>
</td>
<td>
<%= f.text_field(:due_date_string, :value => format_time(f.object.due_date)) %>
</td>
<td>
<%= f.text_field(:tag_string) %>
</td>
<td>
<%= f.submit %>
</td>
<td>
<%= link_to 'Delete', task, :confirm => 'Are you sure?', :method => :delete %>
</td>
<% end %>
问题是表单未提交。单击 f.submit 按钮(“更新”)时,没有任何反应 - 没有 JS 错误,没有向服务器发出请求。
对于此类事情,这可能是完全错误的方法。最初我想使用 javascript 来完成整个事情,手动读取值并对我的 Rails Controller 上的 update 方法进行 jQuery ajax 调用,但我认为可能有一种更简单的方法来做到这一点。有什么建议吗?
我是一名优秀的程序员,十分优秀!