2014-05-08 42 views
0

我已经为我的应用程序(书籍类)添加了一个搜索功能,没有路线匹配{:action =>“search”,:controller =>“devise/books”}

<%= form_tag url_for(:controller => 'books', :action => 'search'), :method => 'get' do %> 
<label>Search</label> 
<%= text_field_tag :search, params[:search], :id => 'search_field' %> 
<%= submit_tag "Search", :name => nil %> 
<% end %> 

我也修改了相应的routes.rb:

Rails.application.routes.draw do 
    devise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks" } 
    resources :users 
    resources :reviews 
    resources :books 
    root :to => "books#index" 

    match '/search', to: 'books#search', via: :get 

现在,当我点击搜索按钮,我得到以下错误:

No route matches {:action=>"search", :controller=>"devise/books"} 

提取的源(左右线#1):

1 <%= form_tag url_for(:controller => 'books', :action => 'search'), :method => 'get' do %> 

不知道为什么Rails是寻找一个控制器称为色器件/这里的书籍。任何帮助提前感谢和感谢。

斯拉夫科

回答

0

尝试

match 'search', to: 'books#search', via: :get 

(无 “/” 中的 “/搜索”)

+0

这给了相同的结果。 – user3570192

0

请尽量将

<%= form_tag("/search", method: "get") do %> 
<label>Search</label> 
<%= text_field_tag :search, :id => 'search_field' %> 
<%= submit_tag "Search", :name => nil %> 
<% end %> 
+0

这在第一行中引起了Devise :: SessionsController#new中的SyntaxError。 – user3570192

+0

我更新了代码,请重试。 –

+0

看起来更好。需要推动heroku进行测试。谢谢。 – user3570192

相关问题