根据路径||使用rails stylesheet_link_tag控制器?

时间:2015-05-27 15:27:35

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

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

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

但是如何根据网址指定要使用的样式表?

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

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

2 个答案:

答案 0 :(得分:1)

您可以尝试使用

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

如果您可以使用password_resets.css代替password_reset.css

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

答案 1 :(得分:0)

以下是我在项目中的工作:

在布局文件中,添加yield方法,如下所示:

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

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

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

这样,样式表将仅在该页面的正确位置。

注意:

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