ruby-on-rails - Rails 3 的动态路由

标签 ruby-on-rails ruby ruby-on-rails-3 url-routing

我的任务是按照路由模型开发一个 Rails 应用程序。

我需要有 PageControllerPage 模型。页面 url 必须类似于 /contacts、/shipping、/some_page

我还需要有 CatalogControllerCategory 模型。类别 url 必须类似于 /laptops、/smartphones/android

它将是 ProductsControllerProduct 模型,产品的 url 必须是行 /laptops/toshiba_sattelite_l605, /smartphones/安卓/htc_magic

我知道这个问题可以通过使用像这样的 URL 来解决

  • /page/shipping
  • /catalog/smartphones/android

但是客户不希望在URL中看到“/page”或“/catalog”的插入。

请告诉我解决这个问题的方向。 抱歉我的英语不好。

最佳答案

你必须写一个“包罗万象”的规则:

在 routes.rb 上:

get '*my_precioussss' => 'sauron#one_action_to_rule_them_all'

您宝贵的 Controller :

class SauronController < ApplicationController
  def one_action_to_rule_them_all
    @element = find_by_slug(params[:my_precioussss])
    render @element.kind # product, category, etc
  end
end

然后为每种“种类”的元素编写一个 View :product.html.erb、category.html.erb 等。

确保编写您的 find_by_slug 实现。

您可以将 one_action_to_rule_them_all 更改为 pikachu_i_choose_you 并将 SauronController 更改为 PokemonController,也可以。

关于ruby-on-rails - Rails 3 的动态路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4195880/

相关文章:

ruby-on-rails - 获取两个事件记录关系的交集,rails

jquery - Bootstrap - 谁能给我任何例子,如何设置 JS 按钮?

ruby-on-rails - 无法在 CommentsController#destroy 中重定向到 Nil(多态关联)

mysql - 如何通过 Ruby 和 mysql2 在 Sequel Pro 中创建/维护 ID 字段

javascript - 从多选下拉列表中选择选项

sql - 使用别名比较 Rails ActiveRecord 中的两个字段

ruby-on-rails - Rails Assets 路径在生产中缺少指纹

ruby-on-rails - 防止 rake 任务和 Rails 控制台中的初始化程序

java - 贝叶斯分类器教程

ruby-on-rails - Rails 1.X 和 2.X 之间的主要区别是什么