0

我在 Rails 中遇到了一个奇怪的问题。当我尝试在上传控制器上使用以下表单提交搜索查询时:

<%= 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 显示操作永远不会被调用!

如果此表单有任何作用,它会在我的索引页面上呈现。

4

1 回答 1

1

我认为它需要find_uploads一个ID。

像这样声明你的路线:

resources :uploads do
    collection do
        get :find_uploads
    end
end

ps:目前,当你这样做的时候rake routes/uploads/find_uploads是在/uploads/:id对吗?

于 2012-07-13T18:55:15.500 回答