【问题标题】:Rails same incoming route but different controller actions?Rails相同的传入路由但不同的控制器操作?
【发布时间】:2017-10-16 13:37:27
【问题描述】:

用户单击 example.com/pizza 之类的标签,并在帖子控制器中看到所有带有披萨标签的帖子。我希望人们也能看到所有带有披萨标签的“替代帖子”,但在不同的控制器中。

rails 路由抛出一个错误,说它已经在使用中。最好的方法是什么?

routes.rb

  # TAGS
  get 'tags/:tag', to: 'posts#index', as: :tag
  get 'tags/:tag', to: 'alternateposts#index', as: :tag

【问题讨论】:

  • tag 别名已被使用,如果您声明两次,URI tags/:tag 将被覆盖。你的模型和关系是如何定义的?你的控制器?改进问题,添加更多细节。

标签: ruby-on-rails routes


【解决方案1】:

您不能使用相同的 URL 声明多个路由。 在您的情况下,第二个 URL 会超载您的第一个。

您必须使用单个控制器声明单个路由并以相同的方式返回postsalternateposts

【讨论】:

    【解决方案2】:

    是的@Antoine Dewaele 是对的。您没有声明具有相同 URL 的多个路由。 你的路由文件是这样的

    get 'tags/:tag' => 'posts#index', :as => :tag
    

    你的路由文件应该是这样的

    get 'tags/:tag' => 'posts#index', :as => :tag
    get 'all_pizza' => 'all_pizza#index', :as => :all_pizza
    

    欲了解更多信息,您可以访问这里Rails Routing from the Outside In

    【讨论】:

    • Pizza 只是标签的一个示例,而不是资源。所以不要制定一条能吃到所有披萨的路线。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-24
    • 2016-03-29
    • 2016-03-03
    • 2021-11-05
    • 1970-01-01
    • 2019-01-12
    相关资源
    最近更新 更多