【发布时间】:2015-04-17 11:20:41
【问题描述】:
我有两条不同的路线需要输出相同的页面,只有微小的差异(标题、打开的图形标签等)
routes.rb
match 'referral/:ref' => 'referral#home'
root :to => "home#index"
home_controller.rb
class HomeController < ApplicationController
def index
@passion = Passion.new
@workshop = Workshop.new
@regions = Region.where("workshops_count > 0").order("name ASC")
@categories = Category.where("passions_count > 0 AND parent_id IS NULL").order("name ASC")
end
end
我不愿意将完全相同的代码从 HomeController 复制到 ReferralController 并且我不想要重定向,因为标题和 OG 标签必须不同(以便在页面有一个特殊的推荐标题共享)
使用 express.js 应用程序(我更熟悉),我会在引用路由中添加一个中间件,然后调用 HomeController#index 操作。所以一切都将在路由级别完成。
Rails 中的惯用方法是什么?
谢谢, 洛朗
【问题讨论】:
-
请贴一些代码
-
一般我们在瘦控制器胖模型中使用rails,所以如果所有与模型相关的代码都在模型中编写通用逻辑并在两个控制器中从那里调用
-
@ratnakar 问题更新了一些代码。我理解瘦控制器/胖模型的事情,但这里我们实际上是在加载“参考数据”(填充搜索过滤器等)
标签: ruby-on-rails ruby ruby-on-rails-3 url-routing