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,因此需要使用该名称搜索模板<代码>。按名称查找(参数[:模板名称])
或类似内容。