0

Railsで奇妙な問題に遭遇しました。Uploadsコントローラーで次のフォームを使用して検索クエリを送信しようとすると、次のようになります。

<%= form_tag ({:controller => "uploads", :action => 'find_uploads'}), :method => "get" do %>
        <%=h text_field_tag :search, params[:search], :id => 'search_field' %>
        <br />
        <%= submit_tag "Search", :style=>"display:inline;" %>
<% end %>

次のURLとエラーページにリダイレクトされます。

/uploads/find_uploads?utf8=✓&amp;search=bot&commit=Search

UploadsController#showのActiveRecord ::RecordNotFound

id=0のアップロードが見つかりませんでした

私のfind_uploadsルート: get 'uploads/find_uploads' => "uploads#find_uploads"

そして、私が行ったとき、私はルートをすくいましたこれは私が得たものです:

uploads_find_uploads GET    /uploads/find_uploads(.:format)    {:controller=>"uploads", :action=>"find_uploads"}

すべてが順調に進んでいるようです...なぜ期待どおりに機能しないのかわかりません。デバッグの目的で、find_uploadsアクションとshowアクションの両方にブレークポイントをドロップしましたが、どちらにも到達しなかったため、UploadsControllerのshowアクションが呼び出されないため、このエラーメッセージが表示されます。

このフォームは、何かが重要な場合は、インデックスページに表示されます。

4

1 に答える 1

1

私はそれがfind_uploadsIDのために取っていると思います。

次のようにルートを宣言します。

resources :uploads do
    collection do
        get :find_uploads
    end
end

追伸:現在、あなたがするときrake routes/uploads/find_uploads/uploads/:idですよね?

于 2012-07-13T18:55:15.500 に答える