我存储搜索历史的简单搜索控制器,我应该使用资源路由还是非资源?

vfi*_*lby 0 ruby ruby-on-rails ruby-on-rails-3

我正在学习rails并且正在玩一个简单的网络应用程序,该应用程序与flickr集成以根据用户给定的条件搜索照片并将查询存储在搜索历史记录表中.

我正在寻求最佳或"轨道"处理方式.我应该设置一个控制器和非资源路由来处理搜索并将数据存储在自定义表中; 或者我应该为具有资源路径和搜索的附加路径的查询创建资源?

jib*_*iel 7

Lemme重构了一下:

rails g controller searches
Run Code Online (Sandbox Code Playgroud)

这个简洁的规则将允许您使用漂亮的每资源操作搜索控制器:

# config/routes.rb
get 'search/:action' => 'searches#:action'
Run Code Online (Sandbox Code Playgroud)

这是这样一个的简化版本:

class SearchesController < ApplicationController

  def foos
    search do
      Foo.where :name => params[:q]
    end
  end

  def bars
    search do
      Bar.where :title => params[:q]
    end
  end

  private

  def search(&block)    
    if params[:q]
      @results = yield if block_given?

      respond_to do |format|
        format.html # resources.html.erb
        format.json { render json: @results }
      end
    else
      redirect_to root_url, :notice => 'No search query was specified.'
    end
  end

end
Run Code Online (Sandbox Code Playgroud)

URL查询的示例:

/search/foos?q=baz
/search/bars?q=baz
Run Code Online (Sandbox Code Playgroud)