我在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 %>
我被重定向到以下网址和错误页面:
/uploads/find_uploads?utf8=✓&search=bot&commit=Search
上传控件中的ActiveRecord :: RecordNotFound#show
找不到上传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 actions中都删除了断点,但是它们都没有到达,因此这条错误消息必须对我说谎,因为从不调用UploadsController show动作!
如果该表单对任何内容都有效,则会在我的索引页面上呈现。
答案 0 :(得分:1)
我认为它会以find_uploads
为ID。
声明你的路线:
resources :uploads do
collection do
get :find_uploads
end
end
ps:目前,当您执行rake routes
时,/uploads/find_uploads
正好在/uploads/:id
之后?