为了制作像http://example.com/:username这样的网址,我为我的用户展示操作构建了我的路线,如下所示:
scope ':username' do
get '' => 'users#show', as: :user
end
(这里的信息是我的用户模型to_param方法)
def to_param
username
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"
我不知道为什么但它始终指向用户show动作。我该如何防止这种情况?
答案 0 :(得分:1)
为什么要使用示波器?你可以这样做:
#config/routes.rb
get ':username', to: 'users#show', as: :user
搜索强>
搜索功能的问题是method: :get
当您通过HTTP发送GET
请求时,您的网址基本上如下所示:
http://domain.com/search?query=your+search+query
您最好发送POST
请求,例如:
#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"