【问题标题】:Themeforest to Rails AppThemeforest 到 Rails 应用程序
【发布时间】:2014-06-05 03:10:53
【问题描述】:

这是我第一次为 Rails 应用程序使用外部 HTML 主题。我从 Themeforest 下载了一个主题。当然,它带有大量的 JS、CSS 和图像。我想知道你们中的大多数人在将主题集成到 Rails 应用程序时使用什么工作流程。

  • 您是否将所有下载的资产都放在公用文件夹中?还是将它们放在 app/assets 中的适当文件夹中,然后修复图像 url 等?

【问题讨论】:

    标签: ruby-on-rails themes


    【解决方案1】:

    我认为这个问题会根据意见得到答案,但您可以尝试使用此 gem 为您的应用程序安装静态 html(未测试)。 install_theme gem。有关使用此 gem 的参考,请阅读此博客 http://drnicwilliams.com/category/ruby/ruby-on-rails/page/2/ (如果我把 tuts 放在这里,我的答案将是完整的)

    关于你的问题:

    您是否将所有下载的资产都放在公用文件夹中?还是将它们放在 app/assets 中的适当文件夹中,然后修复图像 url 等?

    我的工作流程如下:

    1. 将css、js、图片、字体文件放到assets目录下

      -assets
         - fonts
         - images
         - javascripts
         - stylesheets
      
    2. 在css文件和js文件中编辑url图片、url字体。

      如果我对 css 文件使用扩展 css.erb,url 图像,url 字体应该编辑如下:

      图片:

      background-image:url(<%= asset_path 'bg.png' %>);  
      

      字体:

      @font-face {
          font-family: namefonts;
          src: url('<%= asset_path('namefonts.eot') %>');
          src: url('<%= asset_path('namefontsd41d.eot') %>?#iefix') format('embedded-opentype'), 
             url('<%= asset_path('namefonts.woff') %>') format('woff'), 
             url('<%= asset_path('namefonts.ttf') %>') format('truetype'), 
             url('<%= asset_path('namefonts.svg') %>#icons') format('svg');
          font-weight: 400;
          font-style: normal;
      }
      

      如果我使用扩展css.scss

      图片:

      background : image-url("bg.png")
      

      字体:

      @font-face {
      font-family:'namefonts';
      src:font-url('namefonts.eot');
      src:font-url('namefonts.eot?#iefix') format('embedded-opentype'),
      
       ...
      } 
      
    3. 选择 html 结构来布局模板(头部标签、页眉、导航栏、侧边栏页脚)、部分模板(内容、表单等) - 如果我使用 html.erb

      -views
         - layouts
         - partials
           - form
           - index
      

      编码到资产的链接

      <%= stylesheet_link_tag "application", media: "all" %>
      <%= javascript_include_tag "application" %>
      
    4. 编辑图片标签、url标签、表单标签等以符合rails模板(erb文件)

      图片标签

      html 中的示例

      <img src="images/rails.png" class="theclass"/>   
      

      改成

      <%= image_tag "rails.png", :class => 'theclass' %>
      

      链接标签

      html 中的示例

      <a href="index.html">Home</a>
      

      改成

      <%= link_to "Home", root_path %>
      

      表单标签可以阅读this

      <%= form_tag("action", method: "post") do %>
       <%= label_tag(:q, "Label for:") %>
       <%= text_field_tag(:q) %>
       <%= submit_tag("Save") %>
      <% end %>
      
    5. 编辑任何文件以符合 rails

      你可以阅读这个

    6. 更新资产管道

      修复非常简单。打开位于 config/application.rb 的项目配置文件,并在 Application 类中添加以下行:

      config.assets.paths << Rails.root.join("app", "assets", "fonts")
      config.assets.precompile += %w( .svg .eot .woff .ttf )
      

    【讨论】:

    • 我想知道第 4 点到底在说什么
    • @AymanSalah :第 4 点是将 html 标签(图像标签、链接标签、表单标签)转换为 rails 模板。我已经更新了第 4 点。
    • 非常感谢。我现在明白了一点。但我仍然有问题.. 我现在需要给我的表单 css 样式,例如我需要有来自主题的按钮而不是正常的 f.submit 样式我怎样才能实现这一点
    • 你可以给它添加类,例如&lt;%= f.submit "Sign up", :class =&gt; "theclass" %&gt;
    • 最近在 sublime text 中使用了这个正则表达式来提供帮助。查找:['"]/assets(.*?/)(.*?\..*?)['"] 替换为&lt;%= asset_path '\2' %&gt;
    【解决方案2】:

    您是否将所有下载的资产都放在公用文件夹中?还是你 将它们放在 app/assets 中的适当文件夹中,然后修复图像 网址等?

    最重要的是,如果你要做好这项工作,做对了

    为此,我会亲自从头开始整合主题。首先,通过更改您可能拥有的各种layouts(以适应主题的类和样式),然后通过系统的每个部分对其进行相应的样式设置。

    --

    资产

    为了正确呈现assets,我肯定会将它们包含在app/assets 文件夹中,而不是public/____。原因是它们是应用程序通用资产的一部分,需要保存在 asset pipeline 中。

    因此,我基本上会做三件事:

    • 将主题中的images 放入app/assets/images
    • 将主题中的stylesheets 放入app/assets/stylesheets
    • 将主题中的javascripts 放入app/assets/javascripts

    然后我会检查应用程序并努力使样式正常工作(从提到的layout 开始)。

    我认为重要的是要指出,为了达到最佳效果,你最好把事情做对——坐下来正确地完成造型。

    【讨论】:

    • 谢谢。我需要有人告诉我,是的,它可以通过资产管道来完成,还有其他人花时间这样做。花了将近两天的时间,但最后我的布局工作了。谢谢!
    • 没问题!所有最好的东西都需要时间——你无法摆脱它。如果您想正确地完成工作,请花时间这样做:)
    【解决方案3】:

    这是我的工作流程:

    我通常像这样构建我的资产(比如它是一个管理模板,主题文件在 sass 中)

    /app
      /assets
        /stylesheets
          /admin
            _modal.scss
            _reset.scss
            _button.scss
            ....
          /vendor
            /bootstrap
              bootstrap.min.css
            /font-awesome
            ....
    
          admin.scss.scss
    

    admin.css.scss

    里面
    @import 'vendor/bootstrap/bootstrap';
    @import 'admin/modal';
    @import 'admin/reset';
    @import 'admin/button';
    

    我通常用 javascript 做同样的事情

    至于html的

    我通常对每个部分进行渲染(顶部栏、侧边栏等的一部分)

    我通常把它们放在

    /app
      /views
        /partials
    

    所以我打电话来

    <%=render '/partials/topbar'%>
    

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-01
      相关资源
      最近更新 更多