2014-01-29 106 views
0

查詢我使用下面的支架軌道,通過URL

rails generate scaffold server hostname:string 
    rails generate scaffold template remote_template_id:integer remote_template_name:string server:belongs_to 

我編輯的路由進行嵌套

 resources :servers do 
      resources :templates 
     end 

創建我的應用程序現在,我身邊編輯的東西,我的應用程序是偉大的工作。然而,由於這是後端,而不是面對客戶,我希望能夠運行一個查詢,如本,其中「TEMPLATENAME」末是一個任意字符串

http://127.0.0.1:3000/servers/1/templates/find_by_remote_template_name/templatename 

從本質上講,能夠使用搜索列名稱remote_template_name。

解決此問題的最佳方法是什麼?

回答

1

在你routes.rb文件:

resources :servers do 
    resources :templates 
    match 'templates/search/:template_name', to: 'templates#search', via: :get 
end 

那麼你應該能夠查詢http://localhost:3000/servers/1/templates/search/whatever這將在TemplatesController#search行動路線傳遞params[:template_name]

+0

請檢查我的更新後的文章 – Pinpin

+0

請再次閱讀我的回覆。我沒有像我所說的那樣擁有'routes.rb'或URL。此外,由於您傳遞的是控制器名稱而非ID,因此您需要使用該名稱來搜索模板。 '.find_by_name(params [:template_name])'或類似的東西。 – Jon

0

特別感謝喬恩。

解決方法:正確的路由都被設置在需要一些調整

的routes.rb控制器搜索功能:

resources :servers do 
     resources :templates 
     match 'templates/search/:template_name', to: 'templates#search', via: :get 
    end 

而我卻在正列名添加在TemplatesController中搜索

def search 
      @template = @server.templates.where("remote_template_name = ?", params[:template_name]) 
      respond_to do |format | 
        format.html 
        format.json { render json: @template } 
      end 
    end