如何在rails中为每个操作呈现样式表?
由于我的应用程序不是标准的CRUD应用程序,我的控制器最终会有一些需要非常不同的CSS的自定义路由。
所以,我想知道,有没有办法按行动加载css但仍然利用资产管道?
由于
答案 0 :(得分:1)
为stylesheets目录中的每个控制器创建一个目录,并创建与您的操作对应的css文件,然后将其放在您的布局文件中
<%= stylesheet_link_tag "#{params[:controller]}/#{params[:action]}" %>
答案 1 :(得分:1)
您可以使用控制器特定资产。只需从application.css中删除*= require_tree .
即可。并且<%= stylesheet_link_tag "style.css" %>
在其视图中包含样式表操作特定样式表,但您必须告诉rails通过Rails.application.config.assets.precompile = ["style.css"]
编译它们。您可以阅读更多相关信息here。这样我想我们正在使用rails资产管道而不是默认方式。
答案 2 :(得分:0)
根据控制器的路径和动作向主体添加唯一的ID:
助手:
function myFetch(url) {
return fetch(url).catch(function(err) {
let myError = new Error("Fetch operation failed on " + url);
myError.url = url;
throw myError;
});
}
const goodUrl = 'https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js';
const badUrl = 'https://ajax.googleapis77.com/ajax/libs/jquery/2.1.3/jquery.min.js';
Promise.all([
myFetch(goodUrl),
myFetch(badUrl), /* will fail */
myFetch(goodUrl)
]).then(([response1, response2, response3]) => {
console.log(response1);
console.log(response2);
console.log(response3);
}).catch((err) => {
console.log(err);
});
布局:
def page_id
"#{controller_path.tr('/', '-')}-#{action_name}".dasherize
end
然后将样式范围:
/users/index.scss
<body id="<%= page_id %>"...