首页 > 解决方案 > 从控制器提交表单后渲染表格

问题描述

我是 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>

在路线.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

如何实现在同一页面上只呈现一个新表?

标签: ruby-on-rails

解决方案


为此,您将需要一些 Javascript(除非您想再次重新渲染整个页面)。

我建议您查看在 Rails文档中使用 Javascript 以获取一些有用的示例。

Server Side Concerns部分是您想要的案例的最基本和最简单的方法。


推荐阅读