Rails Rails 项目中路由跳转错误

runup · 2017年11月04日 · 最后由 runup 回复于 2017年11月04日 · 1682 次阅读

错误描述:需要在项目中建立一个简单的搜索,待搜索模型为 topics,代码描述如下:

#_search.html.erb
<form class="form-inline">
  <%= form_tag search_topics_path, method: :get do %>
    <%= text_field_tag :search %>
    <%= submit_tag "搜索" %>
  <% end %>
</form>

#config/routes.rb
resources :topics  do
  get :search, on: :collection
end·

#topics_controller.rb
class TopicsController < ApplicationController
  def search
    search = params[:search].present? ? params[:search] : nil
    @topics = if search
      Topic.where("title LIKE ?", "%#{search}%").order("created_at desc").page(params[:page])
    else
      Topic.all.order("created_at desc").page(params[:page])
    end
    debugger
  end
end

将_search.html.erb 放置在 welcomes/index 这个页面中,点击如上的搜索按钮,回到的是 welcomes 的 index 中,但是我想要讲参数送到到 topics 中 search 中,哪里出现了问题?

要不要改用 link_to 把 search 寫在 index 內

hong_xin 回复

没有听懂,不过_search.html.erb 这个页面是用来复用的,会在很多的页面中被使用

你到命令行下执行 rake route | grep search_topics 看看对应的是哪个接口

我有点怀疑你这个模板放在 welcomes/index 某个 form 下面了

kai209209 回复

解决了,我是参考 bootstrap 写的样式,如上代码中,如果使用

<form class="form-inline"></form>

将 form_tag 包裹起来,那么里面的提交路径是失效的,去除这个

就能正确执行想要的提交路径了,感谢。
需要 登录 后方可回复, 如果你还没有账号请 注册新账号