我如何检查在 RoR 中提交表单时会发生啥?

Posted

技术标签:

【中文标题】我如何检查在 RoR 中提交表单时会发生啥?【英文标题】:How can I check what happens when I submit a form in RoR?我如何检查在 RoR 中提交表单时会发生什么? 【发布时间】:2021-08-31 17:58:40 【问题描述】:

我的lists_controller.rb通过复制方法提供@list@lists

  def duplicate
    @lists = List.includes(:list_fields, :user, :list_parts)
    @list = List.new
    respond_to do |format|
      format.html
    end
  end

我的 duplicate.html.erb 文件中有一个表格。

<%= form_for( @list, :html =>  :class => "formtastic normal", :id => "generator_form" ) do |f| -%>
        <fieldset>
          <ol>
            <li>
              <%= label_tag :list_source, "Available lists" %>
              <%= select "list", "original_id", @lists.sort|a,b| a.title <=> b.title.collect|p| [p.title[0,50]+"...", p.id] ,  :include_blank => "Please select a list"  %>
            </li>
          </ol>
        </fieldset>
        <p><%= f.submit "Duplicate" -%></p>
<% end -%>

选择助手给了我一个下拉菜单,我可以从中选择一个列表。当我单击提交时,会创建一个新列表(从现有列表中)并保存在我的数据库中,但我真的不知道提交时幕后发生了什么(单击“复制”)。我该如何检查?

【问题讨论】:

您可以阅读日志。你可以调试。请阅读:guides.rubyonrails.org/debugging_rails_applications.html 【参考方案1】:

只需使用 Rails 记录器。在开发环境中,它在服务器运行时在终端中打印信息

它还将日志写入文件。默认目的地是log/&lt;environment&gt;.log

所以你可以使用tail 命令。例如,在生产中实时读取输出

tail -f log/production.log

您还可以指定日志记录级别和设置日志消息格式

您可以像这样在代码中手动调用记录器

Rails.logger.info 'your message'

在日志中,您将看到请求的操作和控制器、表单中的参数、SQL 查询、呈现的内容或重定向的位置等。

请在official guide阅读更多内容

【讨论】:

非常感谢,我不知道logger的存在,确实很有帮助。一个问题:当你尝试调试时,你是否每次想看东西时都清除 development.log 文件?否则文件会很长,你必须滚动到底部。 @Maxime 您可以在终端中使用命令tailgrep 等。使用 logrotate 工具也是一个好习惯

以上是关于我如何检查在 RoR 中提交表单时会发生啥?的主要内容,如果未能解决你的问题,请参考以下文章

RoR 提交对象以供批准,仅在批准后处理付款

单击按钮时如何防止表单提交? [复制]

PHP - 如何在提交后隐藏表单

表单提交后如何阻止变量重置?

为啥突然表单就提交失败了

RoR:发送附加数据以使用 Jquery AJAX 提交