Ruby on rails Rails中的简单搜索表单错误
我试图实现一个简单的搜索表单,在db中搜索内容被搜索的关键字 我的观点是这样的:Ruby on rails Rails中的简单搜索表单错误,ruby-on-rails,ruby,ruby-on-rails-3,Ruby On Rails,Ruby,Ruby On Rails 3,我试图实现一个简单的搜索表单,在db中搜索内容被搜索的关键字 我的观点是这样的: <%= form_tag search_keywords_path, :method => 'get' do %> <%= text_field_tag :search, params[:search] %> <%= submit_tag "Search", :name => nil %> <% end %> 模型关键字.rb: def
<%= form_tag search_keywords_path, :method => 'get' do %>
<%= text_field_tag :search, params[:search] %>
<%= submit_tag "Search", :name => nil %>
<% end %>
模型关键字.rb:
def self.search(search)
if search
Rails.logger.debug("debug::Searching for" + search)
@keyword = Keyword.find_all_by_content(search)
end
end
现在,每当我尝试运行搜索时,都会出现以下错误:
ActiveRecord::RecordNotFound在关键字ControllerShow中
找不到id为“搜索”的关键字
现在,据我所知,有什么东西把表演方法搞砸了,但我不明白为什么或者如何去修复它。任何帮助都将不胜感激。在您的关键字中。rb
替换
@keyword = Keyword.find_all_by_content(search)
有,
@keyword = Keyword.find_all_by_content("#{search}")
我认为您没有为搜索操作添加路由。您可以按如下方式添加用于搜索的路线:
resources :keywords do
collection do
get 'search'
end
end
如果要使用搜索功能,则需要以引发异常的方式使用“查找”,即传递要查找的id
def show
begin
@keyword = Keyword.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.json { render json: @keyword }
end
rescue ActiveRecord::RecordNotFound
flash[:notice] = "Wrong keyword"
redirect_to :action => 'index'
end
end
单击submit_标记后,请检查传递到服务器的参数。如果您在此处发布F8=>✓, 搜索=>aaa,id=>search您为搜索添加了路线吗?你能显示你的路线吗?你的表单将被发送到你的显示操作,而不是你的搜索操作。。。检查一下表格和你的路线就我所知路线应该可以。但是,查询是从关键字中选择关键字。*,其中keywords.id=?限制1[[id,搜索]]。我并没有试图通过id进行搜索,而是通过内容字段find返回nil,如果没有找到给定链接文档中提到的记录:link[document]ationhttp://api.rubyonrails.org/classes/ActiveRecord/Base.html]我的路线是按照你发布的路线设置的。
def show
begin
@keyword = Keyword.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.json { render json: @keyword }
end
rescue ActiveRecord::RecordNotFound
flash[:notice] = "Wrong keyword"
redirect_to :action => 'index'
end
end