我正在使用Rails 3,我的默认页面设置将包含: 1.搜索表单 2.包含结果的列表 3.编辑表单,用于显示列表中的所选项目。
我不知道如何在不丢失搜索参数的情况下执行此操作。当我选择一个项目时,我可能必须再次通过我的搜索参数,但是,怎么样?
毕竟,将所有这些放在同一页面的最佳方法是什么?
答案 0 :(得分:1)
搜索表单通过AJAX提交到index
。 index
向下发送js.erb以加载您的部分内容。选择项目通过AJAX调用edit
。 edit
向下发送js.erb以加载您的edit
表单。我错过了什么吗?
答案 1 :(得分:0)
如果你想在没有ajax的情况下这样做,你可以在会话中存储搜索参数:
session[:search_params] = "some value"
答案 2 :(得分:0)
提交表单以更新操作时仍然遇到问题。控制器中没有调用更新操作。我在日志中得到了这个错误:
ActionController :: RoutingError(No 路线匹配“/ cids”):
这是我的主要索引页面:
<div id="page-content">
<%= render "search_form" %>
<%= render "search_grid" %>
<%= render "form" %>
</div>
这是显示编辑表单的链接:
<td><%= link_to '', edit_cid_path(cid), :remote=>true %></td>
这是edit.js.erb文件:
$("#edit-form").html("<%= escape_javascript(render("form")) %>")
这是我_form partial的开头:
<div id="edit-form">
<% if @cid %>
<%= form_for(@cid, :html => {:method => "put", :id=>"update-form"}) do |f| %>
<% if @cid.errors.any? %>
这是application.js代码:
$("#edit-form").submit(function(){
saveElement($(this).find("form"));
return false;
});
function saveElement(obj)
{
$.post(obj.action, $(obj).serialize(),
function(){refreshCss()},
"script");
}