Ruby on rails 作用域路由指向错误的控制器

Ruby on rails 作用域路由指向错误的控制器,ruby-on-rails,routes,Ruby On Rails,Routes,为了使url看起来像我已经为我的用户建立了我的路线,显示如下操作: scope ':username' do get '' => 'users#show', as: :user end (此处的信息是我的用户模型到参数方法) 为了防止通过该路由访问其他控制器,我在该路由之前添加了所有其他路由。除此之外,它似乎还起作用: get 'search/:query' => 'searches#show', as: :search 我的表格在哪里 = form_tag search

为了使url看起来像我已经为我的用户建立了我的路线,显示如下操作:

scope ':username' do
  get '' => 'users#show', as: :user
end
(此处的信息是我的用户模型到参数方法)

为了防止通过该路由访问其他控制器,我在该路由之前添加了所有其他路由。除此之外,它似乎还起作用:

get 'search/:query' => 'searches#show', as: :search
我的表格在哪里

  = form_tag search_path(query: {} || params[:query]), method: :get do
    = text_field_tag :query, params[:query], class: "form-control"
    = submit_tag "Search", class: "btn btn-primary"

我不知道为什么,但它总是指向用户显示动作。如何防止这种情况发生?

为什么要使用范围?您可以这样做:

#config/routes.rb
get ':username', to: 'users#show', as: :user

搜索

搜索函数的问题是
method::get

当您通过HTTP发送
GET
请求时,您的URL基本上如下所示:

http://domain.com/search?query=your+search+query
#config/routes.rb
post 'search/:query', to: 'searches#show', as: :search

#view
 = form_tag search_path(query: {} || params[:query]), method: :post do
    = text_field_tag :query, params[:query], class: "form-control"
    = submit_tag "Search", class: "btn btn-primary"

您最好发送一个
POST
请求,如下所示:

http://domain.com/search?query=your+search+query
#config/routes.rb
post 'search/:query', to: 'searches#show', as: :search

#view
 = form_tag search_path(query: {} || params[:query]), method: :post do
    = text_field_tag :query, params[:query], class: "form-control"
    = submit_tag "Search", class: "btn btn-primary"

非常感谢你的解释。基本上,在我的范围内还有其他的路线,我只是以这个为例。再次感谢!没问题-希望它能帮助你!