我有一个带有索引操作的标准帖子 Controller 。
目前,我将其路由为主页 /
以及帖子页面 /posts
class PostsController < ApplicationController
def index
# Logic and finds here
end
end
在我的routes.rb
文件中:
root to: "posts#index"
get "/posts" => "posts#index"
但是,在我看来,根据路线是 /posts
还是只是 /
,我希望布局略有不同。这可能吗?如果是这样,最佳实践是什么?
我正在考虑在帖子 Controller 中创建另一个操作,但随后我将复制已在索引操作中定义的逻辑 - 我想避免这种情况。
我基本上想使用相同的内容,但显示不同的 View 。
非常感谢任何建议或帮助。
谢谢, 迈克尔。
最佳答案
除了使用不同的 Controller /操作之外,一种解决方案是从路由器传递一个附加参数:
root to: "posts#index", source: 'home'
get "/posts" => "posts#index"
然后在你的 Controller 中你可以这样做:
class PostsController < ApplicationController
def index
# Logic
render(params[:source] || 'index')
end
end
当用户通过根路径输入时,它将渲染 home
模板,否则渲染 index
模板。
关于ruby-on-rails - Rails 4 - 如何根据当前路线显示相同 Controller 操作的不同 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23361734/