0

嗨,我有一个 rails 表格:

<%= form_tag("/orders", action: "find",  method: "get") do %>
        <%= text_field_tag(:barcodeform) %>
        <%= submit_tag("find") %>
    <% end %>

这是我的路线.rb

  post 'orders/uploadFile'
   resources :orders do
     member do
       get 'next_state'
     end

     member do
       get 'last_state'
     end

     member do
       get 'last_state_ablauf_2'
     end

     member do
       get 'log'
     end

     member do
       get 'save_Order'
     end

     member do
       get 'auftrag_annehmen'
     end

     member do
       get 'find'
     end
   end

控制器:没什么特别的,我只是设置了一个名为 find 的方法,在那里重定向以查看它是否有效。

现在,当我在表单中输入一个值时,它会这样做:

 http://example/orders?utf8=%E2%9C%93&barcodeform=631&commit=find

但我希望它做类似的事情:

 http://example/orders/531

我没有得到任何搜索结果,它只显示所有条目。我应该如何编写表格以获得这种结果“/orders/id”?有任何想法吗?谢谢

4

1 回答 1

0

发生了一些事情,但首先您应该了解这些utf8信息是由 Rails 表单助手生成的,这是有原因的。如果您真的不想要它,请构建自己的<form>而不是使用表单助手。

接下来,由于用户表面上是在提供您的barcodeform,因此它不应该是表单操作的一部分。你可以用一点 javascript 完成类似的事情,但这不是最佳实践。您希望将该barcodeform值作为查询参数,以便您可以在控制器中访问它params[:barcodeform]并以适当的方式处理用户输入的任何疯狂行为。

最后,您需要修复路线。您的路线当前正在生成一个如下所示的 url:

http://example/orders/:id/find

哪个,因为你还不知道:id,你不想要。相反,使用collection

collection do
  get 'find'
end

现在您的表单应如下所示:

<%= form_tag("/orders/find", method: "get") do %>
  ...
<% end %>
于 2013-11-05T16:12:16.820 回答