在我的 Rails 3 应用程序中,我有许多带有表单的页面,用户可以在其中创建记录然后对其进行编辑。要创建记录,用户单击“添加记录”按钮,会弹出一个模式对话框,其中包含“新记录”表单。一旦用户填写表格并按下保存,模式对话框就会消失并且表格部分更新,显示新记录。要编辑记录,用户单击任何现有记录旁边的编辑链接,这会打开一个模式对话框,其表单与“新记录”表单类似,但标题为“编辑记录”和“保存编辑” , ETC。
现在,我正在使用两个部分进行此操作:表格部分和表单部分。表单部分根据@editing 变量是否为真显示“编辑”标题。
它目前的工作方式是,当用户单击“新建记录”按钮时,它有一个 onClick 函数,它可以做两件事。
1) jquery ajax 调用“新”操作创建必要的对象并呈现部分像这样:
@editing = false
respond_to do |format|
format.js
{
render :update do |page|
page["#entry_div"].html(render :partial=> 'form');
end
}
end
2) 将 div 显示为模式对话框 (simplemodal) 的 jquery 调用。
单击对象的编辑按钮执行相同的操作,除了“编辑”操作将@editing 设置为 true,并且 Ajax 调用发送要编辑的对象的 id。
此外,当用户按下保存并保存对象时,“创建”和“更新”操作都执行以下操作:
respond_to do |format|
if @record.save
@all_records = Record.where(:project_id => @project.id).all
format.js {
@save_message_div = 'save_message_div'
@table_container = 'table_div'
@table_partial = 'table'
@form_partial = 'form'
@form_container = "entry_div"
render 'saved'
}
end
end
'saved' 是一个 .rjs 文件,用于更新部分表格、重置表单并显示“已成功保存”消息。
我的问题是,基本上,我这样做对吗?进行这些调用的最新、最有效和最不引人注目的方式是什么?我是否仍应在我的操作中使用 page["#divname"].html(render partial) 类型调用?我是否仍应使用 rjs 文件重新加载部分内容并显示保存消息?如果没有,我该如何处理这些情况(加载部分等)?
非常感谢,如果您需要更多信息,请告诉我。