在rails中获取请求无法获取id

时间:2013-11-05 14:37:46

标签: ruby-on-rails

嗨,我有一个铁轨形式:

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

这是我的routes.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”? 有任何想法吗? 感谢

1 个答案:

答案 0 :(得分:0)

有一些事情正在发生,但首先您应该了解utf8信息是由Rails表单助手for a reason生成的。如果你真的不想要它,那么建立你自己的<form>而不是使用表单助手。

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

最后,您需要修复路线。您的路线目前正在生成如下所示的网址:

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

其中,因为您还不知道:id,所以您不想要。相反,请使用collection

collection do
  get 'find'
end

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

<%= form_tag("/orders/find", method: "get") do %>
  ...
<% end %>