Rails 4:简单的重定向搜索表单

时间:2016-04-20 22:30:21

标签: ruby-on-rails search

我在使用简单的搜索表单时遇到了一些麻烦。当我在页面上的表单中传递信息时:

  

/搜索

并按提交按钮收集数据并进行搜索,但不是重新加载当前页面,而是将params传递给索引:

  

/ 权利要求书 UTF8 =✓&安培; claim_id = 49&安培; PHONE_NUMBER =%2B34(44)444444

但我想在当前页面上显示搜索结果(没有任何AJAX)。 如果我手动传递这些参数并更改链接,那就更有效了!

  

/ 搜索 UTF8 =✓&安培; claim_id = 49&安培; PHONE_NUMBER =%2B34(44)444444

我的 routes.rb

std::string GetSkypePath()
{
    std::string sPath;

    HKEY hKey;
    if (RegOpenKeyExA(HKEY_CURRENT_USER, "Software\\Skype\\Phone", 0, KEY_QUERY_VALUE, &hKey) == 0)
    { 
        char szPath[MAX_PATH+1] = {0};
        DWORD dwPathLen = MAX_PATH;

        if (RegQueryValueExA(hKey, "SkypePath", NULL, NULL, (LPBYTE)szPath, &dwPathLen) == 0)
            sPath = szPath;            

        RegCloseKey(hKey);
    }

    return sPath;
}

我在控制器中的搜索功能:

Rails.application.routes.draw do
  resources :administrators
  resources :claims

  root :to => "sessions#landing"

  ...

  get    'search' => 'claims#search'

  post   'claims/new' => 'claims#new'
  post   'claims' => 'claims#create'
end

如何修改我的路线?

1 个答案:

答案 0 :(得分:0)

所以,这里发生了一些事情。你需要做两件事

  1. 确保您的控制器操作可以处理多种类型的请求
  2. 确保您有2条路线,1条用于发布(因为您没有使用ajax),1条用于获取
  3. 控制器动作

    if request.post?o    
      @claim = Claim.search(params[:claim_id], params[:phone_number])
    else
      Claim.all (or whatever you want to display when the page is fresh before a search has been done)
    end
    

    你的路线有点乱,所以当我们添加帖子时,请修复它。

    resources :claims do
      collection do
        get 'search'
        post 'search'
      end
    end