从控制器提交表单后呈现表格

时间:2020-06-23 05:00:47

标签: ruby-on-rails

我是Rails的新手,无法找到对我有帮助的资源。

基本上,我有一个视图,该视图具有收集一些数据的表单,在单击提交时,我希望控制器处理数据(获取更多信息)并呈现1行表。

这是我的表单(视图)

<form action="track/do_track" name="track" id="track-form" class="ajax"  method="post">
  
    <div class="table-bar">
      <input type="button" value="Submit" name="Submit" class="uiButton unitExt" id="confirm_submit_button" onclick="submit()"/>
      <div class="fclear"></div>
    </div>
    <div id="table" class="table">
      <div class="line thead">
        <div class="unit th" style="width:160px"><span class="scan-icon-white">ID</span></div>
        <div class="unit th" style="width:175px">
          A/B
        </div>
      </div>

      <div class ="line tr" >
        <%= content_tag :div, :class=>"unit td" do %>
            <%= text_field_tag("shipment_id","",:id=>"id", :class=>"shipment-text padding5", :autofocus => true)%>
        <% end %>

        <%= content_tag :div, :class=>"unit td" do %>
            <select class="mh-ph fk-select-box" name="a-b" id="mf-ph">
              <option id="a" value="A">MotherHub</option>
              <option id="b" value="B">PickupHub</option>
            </select>
        <% end %>

      </div>
    </div>
  </div>
</form>

在routes.rb中

  match "/track/track_page" => "track#track_page"
  match "/track/do_track" => "track#do_track"

点击提交后,我正在do_track中调用track_controller

def do_track
  # some processing
  # render a table in the same view 
  end

  def track_page
    render
  end

如何在同一页面上仅渲染一个新表?

1 个答案:

答案 0 :(得分:1)

您将需要一些Java脚本(除非您想再次重新渲染整个页面)。

我建议您查看Working with Javascript in Rails文档中的一些有用示例。

Server Side Concerns部分是您所需案例中最基本,最简单的方法。