Ruby on rails rails,通过url查询

Ruby on rails rails,通过url查询,ruby-on-rails,routing,Ruby On Rails,Routing,我使用以下脚手架创建了我的应用程序 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 :templat

我使用以下脚手架创建了我的应用程序

    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\u template\u name进行搜索


解决此问题的最佳方法是什么?

在您的
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
它将路由到
模板控制器的
搜索操作
传入
参数[:模板名称]

特别感谢Jon

解决方案:必须设置正确的路由,控制器中的搜索功能需要一些调整

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

请再次阅读我的回复。你没有我所说的
routes.rb
或URL。此外,由于您传递的是控制器名称而不是ID,因此需要使用该名称搜索模板<代码>。按名称查找(参数[:模板名称])
或类似内容。