设计显示路由错误

时间:2014-08-12 17:46:52

标签: ruby-on-rails ruby devise

当尝试注销并登录然后显示此错误但是在登录后如果我在应用程序布局中使用搜索它工作正常。为什么设计正在搜索以下路由?

{:action=>"search_result", :controller=>"devise/gadgets"}  


ActionView::Template::Error (No route matches {:action=>"search_result",  :controller=>"devise/gadgets", :id=>"search-form", :method=>"get"}):

小工具/ _searh.htm.erb

1: <%= form_tag(:controller => 'gadgets', :action => 'search_result', :method => "get", id: "search-form") do %>
2:   <%= text_field_tag :search, params[:search], placeholder: "Search gadget" %>
3:   <%= submit_tag "Search", :name => nil ,:class => "btn-small" %>
4: <% end %>

我正在使用设计进行身份验证。当在应用程序布局中呈现搜索表单时显示上述错误

在application.html.erb中

,我正在使用以下div

<div id="search">
<%= render :partial => 'gadgets/search' %>
  </div>

我的route.rb是

 root :to => 'gadgets#index', :as => 'home'
 resources :gadgets

 get 'gadgets/index'

 get 'gadgets/show'

 get 'gadgets/edit'

 get 'gadgets/create'

 get 'gadgets/update'

 #get 'gadgets/search'

 #match '/search', to: '/gadgets/search_result', :via => [:get, :post]
 match "/gadgets/search_result", :via => [:get, :post]
 get 'gadgets/search_result'
 get 'gadgets/original'
 devise_for :users
 resources :users

2 个答案:

答案 0 :(得分:0)

尝试将表单更改为:

<%= form_tag( { :controller => 'gadgets', :action => 'search_result' }, :method => "get", id: "search-form") do %>
   <%= text_field_tag :search, params[:search], placeholder: "Search gadget" %>
   <%= submit_tag "Search", :name => nil ,:class => "btn-small" %>
<% end %>

form_tag的两个参数都可以是哈希值。第一个参数也可以是一个字符串。由于您正在使用哈希选项,因此必须在其周围添加括号。查看Rails Docs了解更多信息。

答案 1 :(得分:0)

我找到了答案。在application.html.erb中使用devise时,如果我使用任何方法应该使用

<% if user_signed_in? %>