首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Rails -当调用NEW时,在显示窗体之前创建一条记录?

Rails -当调用NEW时,在显示窗体之前创建一条记录?
EN

Stack Overflow用户
提问于 2010-10-26 01:18:32
回答 2查看 1.1K关注 0票数 1

这就是我想要做的。

当用户单击新便笺时..我希望用户可以开始输入注释时被带到一个页面,并使用AJAX将其保存到服务器上。

问题是,每次页面保存时,它都会生成一个新的注释。

这让我相信,当Rails获得DEF新控制器时,我需要rails首先创建一个新的笔记记录,然后重定向到该新笔记的编辑控制器,在那里用户可以使用AJAX创建/编辑笔记。

有什么想法?谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-10-26 01:49:40

如果您确实希望使用#new创建便笺并将其保存,那么您可以简单地执行以下操作

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def new
  @note = Note.create # instead of Note.new
end

然后,Rails将像#edit操作一样显示此注释,因此注释id将位于隐藏字段中。然后,当您发送Ajax调用时,您将调用#edit。如果您希望在关闭javascript时保留#new的行为,那么您可能需要创建一个不同的操作。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def new
  @note = Note.new
end

def new_js
  @note = Note.create
end

当您加载包含指向new_note的链接的页面时,请包含一些更改指向new_js_note的链接的javascript。所以当JS关闭时,你会得到标准的#new表单。当JS打开时,您得到的表单基本上是在编辑预先存在的空白便笺。

票数 1
EN

Stack Overflow用户

发布于 2010-10-26 01:39:47

我曾经遇到过同样的问题,首先创建备注可能是一个好主意。

另一种方法是将用户发送到新操作。当第一次保存时,您将新对象作为JSON对象发送回来,并用该记录的更新url替换表单的操作,并将表单的方法设置为put。

这样,您就不会在数据库中得到空的记录(对于您的用例,您可能正是想要这样,所以用户可以稍后继续注释。)

这只是我的两个观点。

好的,实现这一点的方法可能如下所示:

表格

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<%= form_for resource, 
             :remote => true, 
             :html => { 'id' => 'autosave' }, 
             :url => resources_path(:format => :json) do |f| %>
  ...
<% end %>

应用程序JS

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var $form = $('#autosave');

// bind to the first success event from the form
$form.one('ajax:success', function(data, status, xhr) {
  // data contains our json object (your note as json)
  // now we update the form
  $form.attr('action', '/notes/' + data.id);
  $form.attr('method', 'put');
  $form.attr('data-method', 'put');
});

控制器

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class ExampleController
  ...

  def create
    #
    # respond with the json object if format = json,
    # see the form above I'm passing the format with :url parameter in form_for
    #
    respond_with(resource) do |format|
      format.json { render :json => resource }
    end
  end
end
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4020031

复制
相关文章
窗体显示
这个是可以点击的 主要是没有那个事件绑定所以没有啥事只有点击之后啥都没有啦 我每一部分都用的一个主程序 所以看着会比较乱但是不影响复习 源代码奉上
用户8447427
2022/08/18
1.4K0
窗体显示
在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke。
本文转载:http://blog.csdn.net/playing9c/article/details/7471918
跟着阿笨一起玩NET
2018/09/19
5.1K0
WinForm多线程修改控件时,提示在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke
但是假如在多线程操作还没完成的时候,我就提前关闭窗体,则会引发InvalidOperationException,提示 “在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke”
跟着阿笨一起玩NET
2020/12/29
2.8K0
在Office应用中打开WPF窗体并且让子窗体显示在Office应用上
在.NET主程序中,我们可以通过创建 ExcelApplication 对象来打开一个Excel应用程序,如果我们想在Excle里面再打开WPF窗口,问题就不那么简单了。 我们可以简单的实例化一个WPF窗体对象然后在Office应用程序的窗体上打开这个新的WPF窗体,此时Office应用的窗体就是WPF的宿主窗体。然后宿主窗体跟Office应用并不是在一个UI线程上,子窗体很可能会在宿主窗体后面看不到。这个时候需要调用Win32函数,将Office应用的窗体设置为WPF子窗体的父窗体,这个函数的形式定义如下
用户1177503
2018/05/03
1.7K0
VC 在调用main函数之前的操作
title: VC 在调用main函数之前的操作 tags: [VC++, 反汇编, C++实现原理] date: 2018-09-16 10:36:23 categories: VC++反汇编分析 keywords: VC++, 反汇编, C++实现原理, main函数调用, VC 运行环境初始化 --- 在C/C++语言中规定,程序是从main函数开始,也就是C/C++语言中以main函数作为程序的入口,但是操作系统是如何加载这个main函数的呢,程序真正的入口是否是main函数呢?本文主要围绕这个主题,通过逆向的方式来探讨这个问题。本文的所有环境都是在xp上的,IDE主要使用IDA 与 VC++ 6.0。为何不选更高版本的编译器,为何不在Windows 7或者更高版本的Windows上实验呢?我觉得主要是VC6更能体现程序的原始行为,想一些更高版本的VS 它可能会做一些优化与检查,从而造成反汇编生成的代码过于复杂不利于学习,当逆向的功力更深之后肯定得去分析新版本VS 生成的代码,至于现在,我的水平不够只能看看VC6 生成的代码 首先通过VC 6编写这么一个简单的程序
Masimaro
2018/10/10
2.1K0
VC 在调用main函数之前的操作
C# 子窗体中调用父窗体中的方法(或多窗体之间方法调用)
本文转载:http://www.csframework.com/archive/2/arc-2-20110805-1771.htm
跟着阿笨一起玩NET
2018/09/18
8.4K0
C# 子窗体中调用父窗体中的方法(或多窗体之间方法调用)
设置WPF窗体全屏显示:
//全屏代码: private void Window_Loaded(object sender, RoutedEventArgs e) { // 设置全屏 this.WindowState = System.Windows.WindowState.Normal; this.WindowStyle = System.Windows.WindowStyle.None; this.ResizeMode = System.Windows.ResizeMode.NoResize;
hbbliyong
2018/03/05
3.9K0
跨线程调用窗体控件
本文转载:http://www.csharpwin.com/csharpspace/11279r6763.shtml
跟着阿笨一起玩NET
2018/09/18
1.3K0
CreateProcess时不显示或者不创建窗口 (或用虚拟桌面实现后台调用外部程序)
【方法一:】 将 CreateProcess()的参数dwCreationFlags指定为CREATE_NO_WINDOW,即以不创建窗口方式创建DOS进程。 【参考代码:】 if (!CreateProcess(NULL, szCommand, NULL, NULL, FALSE, CREATE_NO_WINDOW, NULL, NULL, &si, &pi)) 【方法二:】 指定STARTUPINFO结构中WORD wShowWindow为SW_HIDE(但是一定要有这一句: si.dwFlags = STARTF_USESHOWWINDOW|STARTF_USESHOWWINDOW; ),即以不显示窗口方式创建DOS进程。 【参考代码:】 STARTUPINFO si; PROCESS_INFORMATION pi; ::ZeroMemory(&si, sizeof(si)); si.cb = sizeof(si); si.dwFlags = STARTF_USESHOWWINDOW|STARTF_USESHOWWINDOW; si.wShowWindow = SW_HIDE; ::ZeroMemory(&pi, sizeof(pi)); if (!CreateProcess(NULL, szCommand, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)) 【方法三:】 将这个DOS窗口放到另外一个桌面上,实现隐藏。 【参考代码:】 si.lpDesktop="NewDesktop"; if (!CreateProcess(NULL, szCommand, NULL, NULL, FALSE, CREATE_NEW_CONSOLE, NULL, NULL, &si, &pi)) 方法三的详细原理: 参考http://blog.163.com/madengyao_super/blog/static/2859822020093249493150/ 。 =============================================================================== 【用虚拟桌面实现后台调用外部程序】 最近需要实现一个无线通信的功能,X他XX的,该死的硬件厂商竟然不提供接口函数,只提供一个EXE可执行文件-_-! 这样就需要我在程序里调用他的这个EXE可执行文件。 调用EXE文件,可以用WINEXEC()、SHELLEXECUTE()和CreateProcess()等函数来实现,我这里就用CreateProcess()来调用。 但是一个软件,两个EXE文件,这叫什么??实在没办法,我想在打开的时候不让用户看到这个执行文件:首先调用FINDWINDOW来查找窗口的句柄,之后再用SendMessage()来隐藏窗口,但是还是会有一瞬主窗口被显示出来的,或许你会说我BT吧,但是我实在是不忍心看到…… 那么怎么解决这个问题呢,首先我当然在CreateProcess()上面寻找方法,可惜,它只有一个参数可以设置窗口的默认显示方式,但是一旦这个窗口自己重设了显示方式,它就没有任何作用了。 继续查找文档,这时我看到CreateProcess()的一个参数TStartupInfo中有 lpDesktop这么一个属性,按照MSDN的说法,如果该指针为NULL,那么新建的Process将在当前Desktop上启动,而如果对其赋了一个Desktop的名称后,Process将在指定的Desktop上启动,恩,看来不错,就从它入手了; 首先,建立一个虚拟的Desktop。 const DesktopName: PChar = 'NewDesktop'; FDesktop:= CreateDesktop(DesktopName, nil, nil, 0, GENERIC_ALL, nil); 然后,在CreateProcess的时候,指定程序在我新生成的Desktop上运行: var SI: TStartupInfo; begin FillChar(SI, SizeOf(SI), 0); SI.cb:= SizeOf(SI); SI.lpDesktop:= DesktopName; SI.wShowWindow:= SW_HIDE; SI.dwFlags:= STARTF_USESHOWWINDOW; SI.hStdError:= 0; SI.hStdInput:= 0; SI.hStdOutput:= 0; if not CreateProcess(PChar('……'), nil, nil, nil, True, CREATE_NEW_C
战神伽罗
2019/07/24
4.1K0
java在调用System.out.println()打印一个新new的对象时,为什么会调用toString方法?
版权声明:署名,允许他人基于本文进行创作,且必须基于与原先许可协议相同的许可协议分发本文 (Creative Commons)
Fisherman渔夫
2019/07/31
1.5K0
java在调用System.out.println()打印一个新new的对象时,为什么会调用toString方法?
Excel实战技巧63: 制作具有数据导航功能的用户窗体
本文讲述如何连接用户窗体与ADO记录集,最终创建一个与Access窗体相似的用户窗体,可以导航至前一条记录、下一条记录、第一条记录、最后一条记录,等等。
fanjy
2019/12/04
3.1K0
当公司倒闭时,你在干什么?
说出来你可能不信,松哥竟然也经历过公司倒闭的事!最近看到我 GitHub 上开源的 vhr 项目 star 数即将过3k,不禁想起做这个项目时候的事,刚过去一年多,依然历历在目。
江南一点雨
2019/05/07
6600
当公司倒闭时,你在干什么?
当人们在讨论 ChatGPT 时,都在讨论什么
第一,ChatGPT 本质上没有脱离计算机的计算范畴,它只能也终将取代繁重重复、只依靠经验和知识的劳动和工作,它可以取代大部分行业的一部分人,包括程序员,但是无法取代所有程序员,也无法取代那些依靠智慧和灵感的工作,笔者在大厂待过一两年,相信所有大厂都一样,主要产品的代码由于历经多人维护、多次迭代、多向重构,其代码量随随便便几千万行甚至上亿计,这样一个庞然大物能够运行起来,除了优雅的架构设计,还有数不清的胶水,复杂度远超当下 ChatGPT 能够生成的 demo 代码,但是它还是能够有它用武之地,有记不清的 function 代码,它是个好帮手,因此更像是一个无限容量的代码字典。
月小水长
2023/03/02
5290
当人们在讨论 ChatGPT 时,都在讨论什么
MFC-1创建窗体
#include <afxwin.h>//编写窗口程序时,必须加载此文件,该文件中定义了所有的MFC类
liulun
2022/05/09
4750
在调用API之前,你需要理解的LSTM工作原理
选自Analytics Vidhya 机器之心编译 作者:Pranjal Srivastava 参与:李泽南、蒋思源、黄小天 本文从 RNN 的局限性开始,通过简单的概念与详细的运算过程描述 LSTM 的基本原理,随后再通过文本生成案例加强对这种 RNN 变体的理解。LSTM 是目前应用非常广泛的模型,我们使用 TensorFlow 或 PyTorch 等深度学习库调用它甚至都不需要了解它的运算过程,希望本文能为各位读者进行预习或复习 LSTM 提供一定的帮助。 序列预测问题已经存在很长时间了。它被认为是数
机器之心
2018/05/10
1.5K0
用new创建数组
由于new创建的对象是在运行时确立的,所以有着具体情况具体分析的优点,那么什么叫做具体情况具体分析呢?我觉得c++ primer plus的一个例子十分贴切——比如你在度假,已经做好每天的参观计划,可突然有一天天气不好或你心情不好,此时你就不想参观了,如果此时是在编译状态,系统是不允许的,你必须按照计划去参观,但运行时状态,系统是允许的,此时你就可以呆在酒店尽情的玩耍了。用new创建数组也有此优点,即数组长度可以根据情况而定。
全栈程序员站长
2022/08/28
6230
用new创建数组
CAD VBA在模型空间创建一条直线
Set lineObj = ThisDrawing.ModelSpace.AddLine(startPoint, endPoint)
办公魔盒
2019/07/22
8370
CAD VBA在模型空间创建一条直线
当Jvm遇到new关键字
在上一篇我们知道了Jvm的内存划分,这一篇我们来具体分析一下,当我们用new关键字创建一个新对象时,Jvm都做了哪些工作。当虚拟机执行到new指令时,发现它是关键字,于是会检查这个指令参数是否能在常量池中找到相关的引用,并检查这个引用所代表的类是否被加载、解析和初始化过。如果没有被加载,则先执行类的加载过程。当类加载成功后,虚拟机就会为新创建的对象分配内存。分配内存无非就是在Java堆上划出一部分区域来作为新对象的存储空间。但在实际的处理时是比较麻烦的。例如怎么找到空闲的内存,如何划分固定大小内存。我们知道Java虚拟机规范中所说虚拟机中的堆内存可以是连续的也可以是不连续的。所以虚拟机在为对象分配新内存时,就要根据这两种不同的方式来采取不同的实现。这两种方式分别叫作:指针碰撞和空闲列表。正面我们分别看一下它们具体的实现方式。
吉林乌拉
2019/08/14
5500
IL3002:当发布为单个文件时,避免调用
将应用发布为单个文件(例如将项目中的 PublishSingleFile 属性设置为 true)时,调用使用 RequiresAssemblyFilesAttribute 属性注释的成员与单文件不兼容。 这些调用可能不兼容,因为使用此属性注释的成员要求程序集文件位于磁盘上,而嵌入单文件应用的程序集已加载到内存中。
呆呆
2022/02/26
4580
【NEW】WPF窗体中控件移动 + 拖拽大小 + 动画拖动
在之前写了WPF窗体中控件移动 + 拖拽大小 + 动画拖动,但是只能在Canvas容器布局中使用 现在,新增可以在GRID中可以动画拖动了 【GRID中实现动画效果】 下载 (1).gif 【Canvas实现动画效果】 下载 (2).gif 上菜【一定要给需要动态拖动的控件设置宽高】 /* 注意:只要不带焦点的控件包括用户控件 都可以拖动与拖拽大小 【基类中的【公共参数】可以自行修改哦】 使用方法[这是在一个窗体的后台代码]: //实例化对象
Shunnet
2022/06/09
2.3K1
【NEW】WPF窗体中控件移动 + 拖拽大小 + 动画拖动

相似问题

使用Object.const_get().new创建对象时未调用rails .new

23

Rails在.new或.create之前调用自定义验证

113

Rails -显示最后一条记录

20

当表获得新记录时,在另一条记录中自动创建记录

11

当一条记录返回时,对rails的jquery ajax调用不返回数组

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文