Rails 5 根据路线显示内容

Rails 5 show content based on route

我有一个 Rails 5 应用程序,它将根据当前路由在 header 中包含动态内容。我意识到我可以获得路线并将其与 if(current_page?('/home')) 之类的东西进行比较,但这真的是最好的方法吗?

我认为使用 params[:controller]params[:action]current_page? 会更好

您可以使用命名路由 current_page?:

if(current_page?(posts_path))

if(current_page?(post_path(1))

此外,您还可以使用request查看当前路径 如果你在 root path

request.url
   #=> "http://localhost:3000"

request.path
   #=> "/"

考虑在控制器的操作中初始化您的动态内容。这是此类事情的常见解决方案。

例如:

html:

<title><%= @title %></title>

控制器:

def index
  ...
  @title = 'Hello world'
  ...
end

此外,您可以使用 content_for 辅助方法在 Rails 视图中初始化动态内容。关于这个Rails: How to change the title of a page?

也有类似的问题

如果您确定必须在不同的地方并根据当前路由设置此内容,我建议您使用 params[:controller]params[:action] 参数,尽管您的解决方案不是也很糟糕。