【问题标题】:Use rails stylesheet_link_tag based on path || controller?基于路径使用rails stylesheet_link_tag ||控制器?
【发布时间】:2015-05-27 15:27:35
【问题描述】:

在我的应用程序布局中,我有这个条件,它有助于根据 current_user 的存在来决定使用什么样式表:

<% if current_user %>
  <%= stylesheet_link_tag 'application', media: 'all', id: "maincss" %>
<% else %>
  <%= stylesheet_link_tag 'session', media: 'all', id: "maincss" %>
<% end %>

但是如何根据 url 指定使用哪个样式表呢?

例如,我想为此路径使用“password_reset.css”文件

get '/set/:password_reset_token' => 'password_resets#edit'

【问题讨论】:

  • 您可以使用以下&lt;% if current_page?(controller: 'password_resets', action: 'edit') %&gt; ## Include your stylesheet here it will only get loaded for password_reset controller's edit action &lt;% end %&gt;

标签: css ruby-on-rails ruby-on-rails-4


【解决方案1】:

这是我在项目中所做的:

在布局文件中,像这样添加yield 方法:

<html>
  <head>
    ...
    ...
    <%= yield(:head) %>
  </head>
  ...

在任何需要自定义 CSS 的视图页面(.erb 文件)中,我都会在页面顶部添加类似的内容。

 <% content_for :head do %>
   <%= stylesheet_link_tag 'custom_css_filename', media: 'all' %>
 <% end %>

这样样式表将只针对该页面放在正确的位置。

注意:

如果您想为应用程序中的每个 URL 包含自定义样式表,则应使用上一个答案中建议的内容。

【讨论】:

    【解决方案2】:

    你可以试试

    <%= stylesheet_link_tag *([params[:controller], params[:action]] + (params[:id] || '').split('/')) %>
    

    如果您可以使用 password_resets.css 而不是 password_reset.css

    注意:您也可能会得到一些不需要的链接标签,这可能会导致无害(日志除外)404 响应

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-14
      • 2021-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-21
      • 1970-01-01
      相关资源
      最近更新 更多