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]
参数,尽管您的解决方案不是也很糟糕。
我有一个 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]
参数,尽管您的解决方案不是也很糟糕。