【问题标题】:Generate dynamic URL pages basis filter options in Rails在 Rails 中生成动态 URL 页面基础过滤器选项
【发布时间】:2020-06-18 20:20:31
【问题描述】:

我们在remote.tools 有一个rails 应用程序,如果您看到产品页面(请参阅this page),就会发现每个产品都有一组标签。我计划在类别页面上根据这些标签过滤搜索(请参阅this page)。现在,我已经尝试使用 'Acts-as-taggable' gem 和 'Simple-form' 来做这件事(基础this blog)。

我可以在点击“搜索”或在原地执行时刷新页面(现在可以同时执行这两项操作)。但是,我希望根据用户应用的过滤器组合创建唯一的 URL。例如,如果用户选择“视频通信工具”作为类别,并选择“免费试用”和“易于使用”作为标签,则页面 URL 应为“/video-communication-tools-with-free-trial” - 易于使用”。目前,过滤器选项作为参数传递,即“/search?category=xx&tags=yy”。

为过滤器组合使用单独的 URL 将允许我创建用于索引的唯一页面并根据上下文添加内容。

我该怎么做呢?

【问题讨论】:

  • 但是为什么必须在 URL 中传递数据,而不是使用 POST 请求并在参数中传递数据。
  • 对。但问题不在于传递数据,而是根据数据生成动态 URL。
  • 这个动态网址会被使用一次吗?
  • 我希望模仿此页面上的行为 - nomadlist.com/affordable-places-in-europe。如果您尝试过滤器,您将看到 URL 发生变化,并且每个组合都是一个新页面。
  • 坦率地说,我不相信这个想法,因为您必须为每个可能的类别/标签组合动态生成一个巨大的路线列表,或者使用完全疯狂的正则表达式,然后尝试从/video-communication-tools-with-free-trial-that-are-easy-to-use 解析出类别和标签。请求该功能的人忽略了它的复杂性,如果您有极长的虚 URL,它完全没有意义。

标签: ruby-on-rails url-rewriting url-routing


【解决方案1】:

你可以使用jquery来实现,

类似的东西。

<script>
    $('#search_button').on('click', function(){
            window.location = "" + $('#tag1').val()+"-"+$('#tag2').val();
        });
</script>

确保在搜索按钮中添加 id。希望这对你有用。

【讨论】:

  • 谢谢。但是有一种默认的表单提交方式是由 simple_form 完成的。我必须覆盖它吗?
  • 是的,您可能想删除默认提交表单的方式,只需删除提交标签并添加带有 id 的自定义提交按钮并使用上述代码即可。跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-04
  • 1970-01-01
  • 2019-08-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多