导轨,1个表格,两个按钮。搜索和新

时间:2015-07-07 18:54:41

标签: ruby-on-rails ruby forms

我想我尝试做类似this question的事情,但是在轨道上。我想有一个搜索形式的排序,但我想使用一个文本输入,并有两个提交按钮,一个启动搜索,另一个开始使用表单中的参数创建一个新的工作订单,而不是两个单独的表单。我已经实施了下半场,但似乎找不到明显的方法。这rails cast似乎开始得到我想要的东西,但似乎铁路助手正在阻碍任何事情。没有javascript有没有办法做到这一点?此外,我似乎将原始html与rails erb混合,所以我怀疑它也可以改进。除非事实证明rails只是不能做我想要的事情然后这意味着我需要求助于直接HTML甚至是javascript?我唯一犹豫使用javascript / jquery是因为我目前对它们非常弱,甚至不知道在哪里放js文件或者命名它们。

<%= form_tag new_work_order_path, :method => "get", class: "navbar-form navbar-left" do %>
  <div class="form-group">
    <%= text_field_tag :client_number, params[:client_number],  class: "form-control", placeholder: "Enter client number"%>
  </div>
  <button type="sumbit" class="btn btn-default">New Work Order</button>
<% end %>

2 个答案:

答案 0 :(得分:0)

为每个按钮指定一个值属性。

 <%= form_tag new_work_order_path, :method => "get", class: "navbar-form navbar-left" do %>
  <div class="form-group">
    <%= text_field_tag :client_number, params[:client_number],  class: "form-control", placeholder: "Enter client number"%>
  </div>
  <button type="submit" class="btn btn-default" value="new">
    New Work Order
  </button>
  <button type="submit" class="btn btn-default" value="search">
    Search
  </button>
<% end %>

然后在你的控制器方法中检查params [:commit]:

if params[:commit] == "new"
  # create the new WorkOrder
else
  # do the search for existing WorkOrders
end

您可能希望使用不同的控制器方法名称,因为它将同时处理搜索和新搜索,而不仅仅是新的。

答案 1 :(得分:0)

对于每个方法(新建和搜索),您应该有两个不同的操作,这适用于REST良好实践。 为此,您可以使用其他rails形式,并为每个按钮设置操作,如<%= button_to 'Call Action', action_path, method: [POST|GET]%>