1

我试图在实际将其保存到数据库之前确认输入的信息

考虑制作一个单独的确认页面,如此处所述

Ruby on Rails:ActiveRecord 对象创建的确认页面

但是,我的表单包含一个使用回形针的附件,这使得实施起来更加麻烦。

我想只有一个 :confirm => 弹出窗口来显示用户刚刚输入的信息。

问题是如何显示用户刚刚输入的信息,例如

<% form_for @entry, :html => { :multipart => true } do |f| %>
  <%= f.error_messages %>


    <%= f.label :name %><br />
    <%= f.text_field :name %>

    <%= f.label :file %><br />
    <%= f.file_field :file %>

    <%= f.submit 'Create', :confirm => "????? " %>

<% end %>
4

3 回答 3

1

Rails 提交方法的确认选项只能采用文本值。

如果您想动态生成确认文本,一种方法是编写自己的 HTML 提交标记,并编写自定义 javascript 来分析您要在生成的文本中使用的字段。

或者,您可以使用 Rails 提交方法,但使用 JQuery 之类的方法向其中添加事件处理程序。

于 2009-12-10T08:24:06.227 回答
1

我只是将我的js 放入 onclick 处理程序中。这就是 Rails 所做的一切。

<%= f.submit 'Create', :onclick => "confirm('Name is ' + $F('entry_name'));" %>

(注意,没有测试,但看起来很接近。确认是一个核心 js 函数,不是任何库的一部分)

于 2009-12-10T14:26:01.907 回答
1

鉴于您正在加载附件,呈现一个包含从附件派生的信息允许用户确认的登台视图可能不是一个坏主意。如果是图像则显示文件,如果是文本文件则显示第一段文本等。

这将比仅仅添加一个确认弹出窗口需要更多的工作,但我觉得增强的用户体验值得付出额外的努力。

我不熟悉回形针的工作方式。因此,对于私密的细节,您主要靠自己。

您可能必须先创建一条记录,然后才能使用上传文件的样本呈现登台视图。为了实现这一点,我在相关模型上设置了一个“活动”列,默认为 false。

用法看起来像这样:

  1. 用户填写新表格。
  2. 更新附件并保存记录,活动字段设置为 false。
  3. 重定向到确认页面,该页面本质上是带有确认链接/按钮和取消链接/按钮的显示页面
  4. 一种。当点击确认链接/按钮时,它会向控制器发送一个请求,触发此记录设置上的更新操作为真。

    湾。当点击取消链接/按钮时,它会向控制器发送一个请求,触发对该记录的销毁操作。

剩下的就是设置一个重复的任务来删除不活动的对象,并且在很久以前就可以安全地假设用户刚刚结束了浏览器会话。

于 2009-12-10T20:15:53.473 回答