【问题标题】:How can i output my console log into HTML page with jQuery如何使用 jQuery 将控制台日志输出到 HTML 页面
【发布时间】:2018-08-21 03:19:20
【问题描述】:

我有一些关于 ruby​​ 的方法,可以将一些消息放入控制台。 比我需要将此消息输出到我的 html 页面中。 我使用 form_tag 获取此方法的数组并将其发送到我的控制器(使用 jQuery 提交按钮)

<div>
<%= form_tag :testrun, :method => :post, id: 'myForm' do %>
<%= check_box_tag 'testcase[]', :method1 %>
...
<% end %>
<button id="myBtn" class="btn btn-primary">Start</button>
</div>

这是我的 HTML 页面。 比我有 jQuery 脚本将我的表单发送到控制器

    <script>
      $(document).ready(function() {
          $('#myBtn').on('click', function() { $('#myForm').submit(); });
          });
      });
   </script>

现在我需要在单击开始按钮时重绘该页面并在其上输出控制台。我怎样才能做到这一点。 对不起,我的英语:)

这就是我的控制器中的内容

class TestRunController  < ApplicationController
  def new
  end

  def show
    @test = Case.new
    testcases = params[:testcase]
    testcases.each do |testcase|
      @test.send testcase
    end
  end
end

在 routes.rb 我得到了

Rails.application.routes.draw do
  match '/testrun',    to: 'test_run#show',      via: 'post'
  match '/testrun',    to: 'test_run#new',          via: 'get'
end

show.html.erb

<% provide(:title, 'Test Run') %>
<h1>Test Run</h1>

<p>here will be console.log</p>


<a href="/testrun">New run</a>

日志示例

Started POST "/testrun" for 127.0.0.1 at 2018-08-21 07:12:41 +0300
Processing by TestRunController#show as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"h+zZOjeI4Ou2xiDlr3XOAuOTbNVg2ipS0Y05NoEIq6t5txz/sOjh+Zp4+8ri5TNK7HqDo2RY2mE6QpPtwjnwWg==", "testcase"=>["method1"]}
login successfully
method1 - Success
  Rendering test_run/show.html.erb within layouts/application
  Rendered test_run/show.html.erb within layouts/application (0.5ms)
  Rendered layouts/_shim.html.erb (0.3ms)
  Rendered layouts/_header.html.erb (0.7ms)
  Rendered layouts/_footer.html.erb (0.6ms)
Completed 200 OK in 9453ms (Views: 31.0ms | ActiveRecord: 0.0ms)

【问题讨论】:

标签: jquery ruby-on-rails


【解决方案1】:

知道将表单提交的参数发送到控制器操作没有问题,您可以更新您的控制器和视图,如下所示以显示用户选择的方法的结果:

test_run_controller.rb

class TestRunController  < ApplicationController
  def show
    @test = Case.new
    @output = params[:testcase].each_with_object({}) do |method_name, o|
                o[method_name] = @test.public_send(method_name)
              end
  end
end

show.html.erb

<h1>Test Run</h1>

<% @output.each do |method_name, result| %>
  <div>
    <p><%= method_name %></p>
    <p><%= result %></p>
  </div>
<% end %>

注意:我使用的是public_send 而不是send,因为它可以防止您意外调用私有方法。

另请参阅each_with_object 的文档。

【讨论】:

  • 谢谢你,但这对我来说似乎不是解决方案。该代码仅返回所选方法的名称。我需要在页面上显示所有控制台信息。我在我的方法中使用了许多“放置”。
  • 尝试将&lt;%= @output %&gt; 放在@output.each 循环之前并在视图中显示它返回的内容。
  • {"method1"=>nil} method1 我所有的方法都返回 nil,但在控制台中我得到了更多信息。
  • 所以,你的方法返回nil。显示结果的逻辑是正确的。您需要确保您的方法返回可见的内容。
  • 你在控制台看到了什么信息?您是在谈论数据库查询吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-03-30
  • 2021-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-07
  • 1970-01-01
相关资源
最近更新 更多