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_formpartial里的表单标签:
如果你用的是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
相关产品推荐
相关产品推荐

