如何使用jQuery将控制台日志输出到HTML页面

时间:2018-08-21 03:19:20

标签: jquery ruby-on-rails

我在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)

1 个答案:

答案 0 :(得分:0)

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

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的文档。