小编Con*_*hen的帖子

微数据:如何使用模板/部分?

TL; DR: Microdata强制您在与此itemprops vaule的itemtype相同的元素上使用itemprop.如果你想将你的模板分解为部分,你如何处理这个问题?元素可能只出现在两个位置中的一个位置,无论是在包含模板还是包含的部分中,两者都不能很好地工作.

我正在使用带有haml的Rails,但我想我的问题适用于任何模板引擎,您可以将模板拆分为较小的部分.我大量使用partials,这意味着我的模板通常不超过10行代码.但是将微观数据拟合到这些中似乎过于复杂,那么你应该如何正确地使用微数据?

举个例子:

#app/views/article/show.html.haml
%p Hey, Welcome! Read This wonderful article:
= render @article

#app/views/articles/_article.html.haml
%div[ article ]
  %h1= @article.title
  %p= @article.description
  %div= render @article.video

#app/views/videos/_video.html.haml
%div[ video ]
  %h2= video.file_name
  %video{ src: video.url }
Run Code Online (Sandbox Code Playgroud)

现在使用微数据:

#app/views/articles/_article.html.haml
%div[ article ]{ itemscope: true, itemtype: 'http://schema.org/Article' }
  %h1{ itemprop: 'name' }= @article.title
  %p{ itemprop: 'description' }= @article.description
  %div{ itemprop: 'video' }= render @article.video
Run Code Online (Sandbox Code Playgroud)

然后什么?我必须VideoObject在同一个div上添加itemtype,itemprop: 'video'因为这就是微数据的工作方式.所以:

#app/views/articles/_article.html.haml
%div{ itemprop: 'video', itemscope: true, itemtype: 'http://schema.org/VideoObject' }= render …
Run Code Online (Sandbox Code Playgroud)

haml ruby-on-rails microdata

16
推荐指数
1
解决办法
596
查看次数

如何使用Ruby on Rails中的Devise验证密码强度?

我想强制用户在注册时选择一个强密码.

我知道,那里有很多jquery密码强度计,我很可能也会使用其中一个.但这并没有真正强制任何人选择强密码.注册表单也必须在没有启用js的情况下可用,因此仍然可能使用弱密码注册.

帐户必须最安全,因为如果您已登录,则可以查看其他帐户的数据,在任何情况下我都不希望这些数据.所以我想在这里寻求最大的安全性,因此我认为,最重要的是只允许使用强密码.

所以,

如何设置和自定义验证最小密码强度的要求?我唯一能在设计配置文件中找到的是密码长度.我应该用这个任务的另一个宝石吗?

passwords ruby-on-rails devise

14
推荐指数
2
解决办法
1万
查看次数

在Ruby中,当没有合适的英语"<verb> able"时,mixin的命名约定是什么?

示例:我有一个Person类和一个Role类.我想从两者中提取角色功能Role并将其提取Person到mixin中.我得到两个mixins:Actable包括在内RoleAdaptablefor Person.

我有时候想不出适合的英语单词.在上面的例子中,适应性似乎更适合角色而不是人,因为角色可以适应,因此是适应性的.一个更好的名字将是多才多艺的,但它打破了mixin名称的惯例,以...结束.(但它仍然是一个形容词.)

其他示例是当我想添加允许检查的模块时,如果允许Person查看其他人.你怎么找到这个结尾的名字?Viewable似乎是不合适的,可以看到的人应该是可见的.我showable现在坚持(适合控制器中的方法名称).但话又说回来,这是该人可以证明,这应该是showable不希望显示的人.

所以我想我的问题是,当没有适当的英语形容词结尾...能够用于模块名称时,我应该选择另一个形容词不能结束...能够或者我应该给它一个不完全的名称适合?

ruby naming-conventions mixins

8
推荐指数
1
解决办法
1685
查看次数

使用Security Extension for Devise(RoR)注册时出现错误"邮件已被采取"两次

我正在使用具有安全扩展的设计来验证强密码.

当我尝试使用已经收到的电子邮件注册帐户时,我在错误哈希中收到错误"已经收到电子邮件"两次.

我的用户模型如下所示:

class User < ActiveRecord::Base
  # Include default devise modules. Others available are:
  # :token_authenticatable, :confirmable,
  # :lockable, :timeoutable and :omniauthable
  # :trackable deleted
  devise :database_authenticatable, :registerable, :secure_validatable

  # Setup accessible (or protected) attributes for your model
  attr_accessible :email, :firstname, :lastname, :password, :password_confirmation, :remember_me
end
Run Code Online (Sandbox Code Playgroud)

如果没有安全扩展(:validatable而不是:secure_validatable),我只会得到一次错误.

我究竟做错了什么?


PS奖金问题:

如何防止首先出现某些错误?我是否必须操纵设计的RegistrationsController或者有一个选项吗?

ruby-on-rails devise

5
推荐指数
1
解决办法
1683
查看次数

无开始日期范围不允许包含?

ruby 2.7 引入了无限范围。现在您可以拥有:

(..5)
(5..10)
(10..)
Run Code Online (Sandbox Code Playgroud)

对于整数,.include?可以按预期工作:

(..5).include?(6) # false
(..5).include?(5) # true
(..5).include?(2) # true
(..5).include?(-100) # true
Run Code Online (Sandbox Code Playgroud)

但是,这不适用于日期范围:

(..Date.tomorrow).include?(Date.today) # RangeError (cannot get the first element of beginless range)
Run Code Online (Sandbox Code Playgroud)

有趣的是,它的作用相反:

(Date.yesterday..).include?(Date.today) # true
Run Code Online (Sandbox Code Playgroud)

最后:

(Date.yesterday..).include?(Date.today - 2.days) # Seems to loop forever.
Run Code Online (Sandbox Code Playgroud)

这是一种很奇怪的行为。所有 3 个案例都会带来不同的结果,并且只有其中 1 个案例真正按预期工作。

我的意思是,我想如果我们有一个具有某种“连续”逻辑的范围,那么可能很难检查是否包含在内,这是可以理解的。但像 Date 这样相对简单的类至少应该可以工作。无论如何,日期几乎就像一个整数。甚至 Float 也可以做到这一点,所以我不明白为什么 Date 或 DateTime 不应该这样做。

我的用例是数据库可能会为我正在查询的 2 个日期提供 nil 。这些是我想在一个范围内使用的开始和结束日期,但我不能确定其中一个可能不为零,这对我的逻辑来说很好,但这会导致一个无开始的范围,这可以处理不了.include?

我可以轻松地让我的用例通过一些手动丑陋的检查来工作,但这不是优雅的 ruby​​ 方式。我在这里错过了什么吗?或者这应该是一个尚不存在的功能?

ruby ruby-2.7

1
推荐指数
1
解决办法
1747
查看次数