Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails中的简单搜索表单错误_Ruby On Rails_Ruby_Ruby On Rails 3 - Fatal编程技术网

Ruby on rails Rails中的简单搜索表单错误

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

我试图实现一个简单的搜索表单,在db中搜索内容被搜索的关键字

我的观点是这样的:

<%= 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