小编ari*_*uod的帖子

如何在带有 Webpack 的 Rails 6 中使用自定义字体

对于我新启动的 Rails 6 应用程序,我想要一组自定义字体。我的设置如下所示:

# app/assets/stylesheets/my-font.sass

@font-face
  font-family: 'my-font'
  src: url('fonts/my-font.eot') format('embedded-opentype'), url('fonts/my-font.woff') format('woff'), url('fonts/my-font.ttf') format('truetype'), url('fonts/my-font.svg#my-font') format('svg')
  font-weight: 400
  font-style: normal
Run Code Online (Sandbox Code Playgroud)

然后在app/assets/stylesheets/fonts我的 sass 文件中引用了所有 4 个文件。

application.sass有以下导入:@import 'my-font'.

当我运行时rails assets:precompile,它还会将所有 4 个带有后缀版本(例如my-font-7384658374658237465837246587263458.eot)的文件放在public目录中。

但是,当我运行该应用程序时,浏览器正在根目录中查找名为 的文件,该文件my-font.eot当然不存在并且是 404。这对我来说绝对是一个配置问题,但我不知道在哪里。任何帮助将非常感激。

ruby-on-rails rails-sprockets ruby-on-rails-6

9
推荐指数
2
解决办法
6307
查看次数

测试基础(抽象)控制器

我有一个基本控制器具有一些功能,基本控制器无法从外部访问,没有路由匹配它.

然后,我用其他控制器扩展该控制器以添加额外的功能和路由,我有3个控制器扩展该基本控制器只是为了在每个控制器上定义3个方法.

我想测试基本控制器,但我做不到

post :index
Run Code Online (Sandbox Code Playgroud)

因为没有该行动的路线(没有路线匹配错误)

我不想将这些测试添加到这3个控制器中的一个,因为它们发生了很大的变化(控制器在... 3周的运动中使用然后被删除).

一些代码......:

基本控制器,CampaignController

class CampaignController < ApplicationController
  def index
    #some code...
  end

  def campaign_name
    raise('campaign_name missing')
  end

  def campaign_url
    raise('campaign_url missing')
  end

  #more actions....

end
Run Code Online (Sandbox Code Playgroud)

其中一个可访问的控制器,SchoolCampaignController

class SchoolCampaignController < CampaignController
  def campaign_name
    'school'
  end

  def campaign_url
    school_url
  end
end
Run Code Online (Sandbox Code Playgroud)

那些控制器基本上是这样的,但有时我需要覆盖其中一个基本动作

那么,我做错了什么?我该如何正确测试CampaignController?

编辑:我不想测试那两个引发错误的方法,我想测试索引,或者其他一些操作(未显示)

我试过"response = controller.index",但是它没有调用before过滤器而且响应不是http响应,它只是该命令的输出(我不能做像...响应的期望.应该render_template(xxxx)

编辑2:为了绕过路由错误,我在before(:all)块中创建了测试内部的路由,然后路由不是问题,但现在,我得到有关非现有视图的错误(每个可访问控制器实现所有观点,但抽象的有非)

controller rspec ruby-on-rails

6
推荐指数
2
解决办法
2693
查看次数

测试“验证...,格式=&gt; 与”

我有一个带有此验证的用户模型

validates :name, :lastname, :format => {:with => /^[a-zA-Z]+$/, :message => 'Only letters and spaces allowed.'}
Run Code Online (Sandbox Code Playgroud)

我不确定如何正确测试它。

我已经完成了一个函数,该函数返回由 a-zA-z 字符数组中的 10 个字符组成的随机字符串。

def get_random_name
  "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ".split('').shuffle[0..10].join
Run Code Online (Sandbox Code Playgroud)

结束 结束

然后我为每次运行的规格获得一个新名称。

我不想测试它是否使用了一些正则表达式,因为那样我将测试实现而不是行为,而且我也不想只测试一个硬编码案例。

我的问题是:我应该这样做吗?真的需要吗?它是更好还是无用?您知道测试这种验证的更好方法吗?

编辑:另一个问题,如何生成无效的随机名称?有没有办法创建包含至少一个超出允许值的字符的随机名称?我不能硬编码所有无效值的数组来随机化它,因为它太大了

rspec rspec-rails

5
推荐指数
2
解决办法
5094
查看次数