0

こんにちは、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" を取得するには、どのようにフォームを作成すればよいですか? 何か案は?ありがとう

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 に答える