我想我尝试做类似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 %>
答案 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]%>