2013-09-24 37 views
0

我有以下的搜索表单:的Ruby-on-Rails的快速搜索表单

<%= form_tag edit_lot_path(:id), :class => "form-search", method: :get do %> 
    <div class="input-append"> 
    <%= text_field_tag :id, nil, :placeholder => "Lot #", :class => "input-mini search-query" %> 
    <%= button_tag(type: "submit", class: "btn") do %> 
     <i class="icon-search"></i> 
    <% end %> 
    </div> 
<% end %> 

我所试图做的是通过一个搜索字段(ID的路径),这样用户可以做快速查找ID。不幸的是我得到错误Couldn't find Lot with id=id

请注意,这是使用轨道4

+0

什么'url'它去当u点击提交?表单标记看起来不正确,你传递':id'作为'edit_lot_path'的参数,它生成了“lots/id/edit”和'params [:id] = id' – tihom

回答

1

对于搜索的实现,理想情况下,你应该有单独的行动如'搜索'在你的地段控制器。

在路线

resources :lots do 
    get :search, :on => :collection 
end 

在视图文件

<%= form_tag search_lots_path, :class => "form-search", method: :get do %> 
    <div class="input-append"> 
    <%= text_field_tag :id, nil, :placeholder => "Lot #", :class => "input-mini search-query" %> 
    <%= button_tag(type: "submit", class: "btn") do %> 
     <i class="icon-search"></i> 
    <% end %> 
    </div> 
<% end %> 

在很多控制器

def search 
my_search_string = params['id'] 
// YOUR CODE GOES HERE 
end 
+1

谢谢ive实现这个作为一个单独的动作,有用! – user2732663