You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rails城市专属事件搜索表单提交后跳转主索引页的解决方法

解决办法

核心问题是你的local_search_form表单默认提交到了主索引页的路由,得改表单的提交目标路径,具体步骤如下:

  • 先确认路由配置:在config/routes.rb里给atx_index方法设置命名路由,方便后续调用:

    get 'events/austin', to: 'events#atx_index', as: 'atx_events'
    

    这里as: 'atx_events'会生成atx_events_path和atx_events_url两个路由辅助方法,方便在视图里直接引用。

  • 修改local_search_form partial里的表单标签:
    如果你用的是form_tag,直接把目标路径改成命名路由:

    <%= form_tag(atx_events_path, method: :get) do %>
      <!-- 保留的搜索字段 -->
      <%= submit_tag '搜索' %>
    <% end %>
    

    要是用的是form_with,需要显式指定url选项,同时关闭默认的远程提交:

    <%= form_with(url: atx_events_path, method: :get, local: true) do |form| %>
      <!-- 保留的搜索字段 -->
      <%= form.submit '搜索' %>
    <% end %>
    
  • 最后检查控制器的atx_index方法:确保它处理搜索参数的逻辑和index一致,只是多了奥斯汀的事件作用域限制,比如:

    def atx_index
      @events = Event.in_austin.where(search_params)
      # 复制index方法里的其他逻辑,比如分页、排序等
    end
    

    这里in_austin是你之前基于address地理定位实现的事件作用域,用来筛选奥斯汀地区的事件。

这样修改后,表单提交就会触发events#atx_index方法,搜索结果自然会显示在奥斯汀的专属索引页。

内容的提问来源于stack exchange,提问作者Ogarocious

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 16:21:52