我有一个带索引操作的标准帖子控制器。
目前,我将此广告作为主页/
以及帖子页面/posts
class PostsController < ApplicationController
def index
# Logic and finds here
end
end
在我的routes.rb
文件中:
root to: "posts#index"
get "/posts" => "posts#index"
但是,在我看来,我想根据路线是/posts
还是/
来略微区别。这可能吗?如果是这样,那么最佳做法是什么?
我正在考虑在posts控制器中创建另一个动作,但后来我将复制已经在我的索引动作中定义的逻辑 - 我想避免使用它。
我基本上想要使用相同的内容,但显示不同的视图。
非常感谢任何建议或帮助。
谢谢, 迈克尔。
答案 0 :(得分:3)
除了使用不同的控制器/操作之外,一种解决方案是从路由器传递一个额外的参数:
root to: "posts#index", source: 'home'
get "/posts" => "posts#index"
然后在你的控制器中你可以这样做:
class PostsController < ApplicationController
def index
# Logic
render(params[:source] || 'index')
end
end
当用户通过根路径输入时,它将呈现home
模板,否则将呈现index
模板。
答案 1 :(得分:1)
对于当前场景,您可以使用此
在你的行动中使用
request.fullpath
这将捕获当前的uri,你可以使用它来实现东西或者在rails 4中你也可以使用
request.original_url
要获取网址,this问题详细说明了用法