我已经向我的控制器添加了一个方法并正确路由它但是当我尝试从form_tag
调用它时,它会给我一个路由器错误。发生了什么事?
<% form_tag search_item_path, :method => 'get' do %>
<%= text_field_tag :name , '' %>
<%= submit_tag "Submit" %>
<% end %>
路线:
resources :items do
collection do
get :search, :as => :search
end
end
rake路线也可以:
search_item GET /items/:id/search(.:format) {:action=>"search", :controller=>"items"}
items GET /items(.:format) {:action=>"index", :controller=>"items"}
POST /items(.:format) {:action=>"create", :controller=>"items"}
new_item GET /items/new(.:format) {:action=>"new", :controller=>"items"}
edit_item GET /items/:id/edit(.:format) {:action=>"edit", :controller=>"items"}
item GET /items/:id(.:format) {:action=>"show", :controller=>"items"}
PUT /items/:id(.:format) {:action=>"update", :controller=>"items"}
DELETE /items/:id(.:format) {:action=>"destroy", :controller=>"items
但是,如果我写这样的作品:
<% form_tag url_for(:controller => "items" , :action => "search"), :method => "get" do %>
我在这里缺少什么?
答案 0 :(得分:4)
我认为它应该是多元化的search_items_path
路线可能更清洁
resources :items do
collection do
get :search
end
end
或
resources :items do
get :search, :on => :collection
end
答案 1 :(得分:1)
您的路线正在寻找id
,必须使用search_item_path(@item)
来调用?
有些东西不对。使用您提供的routes.rb,它应该如下所示:
search_items GET /items/search(.:format)
我们在这里看到的一切吗?您的示例定义了一个收集路由,但routes.rb的输出将其显示为成员路由。